Tag: restkit 0.20

使用RestKit 0.20.3来映射json

我试图映射对象通过RestKit 0.20.3,但我有这些日志天知道: 2013-08-12 18:32:08.158 MyAppIphone[848:5703] E restkit.network:RKResponseMapperOperation.m:304 Failed to parse response data: Loaded an unprocessable response (200) with content type 'application/json' 2013-08-12 18:32:08.174 MyAppIphone[848:5703] E restkit.network:RKObjectRequestOperation.m:238 POST 'myUrl' (200 OK / 0 objects) [request=0.1305s mapping=0.0000s total=5.6390s]: error=Error Domain=org.restkit.RestKit.ErrorDomain Code=-1017 "Loaded an unprocessable response (200) with content type 'application/json'" UserInfo=0x1ed5a500 {NSErrorFailingURLKey=myUrl, NSUnderlyingError=0x1ed5b240 "The operation couldn't be […]

RestKit:无法使用coredata执行映射

我正在使用rest套件0.20.3和Xcode 5.如果没有核心数据,我可以执行所有rest套件操作,但是当我用核心数据尝试过时,由于某些原因,我甚至无法执行GET问题。 我无法弄清楚。 我是新的核心数据。 所以请帮助。 这是我的代码: AppDelegate.m @implementation CardGameAppDelegate @synthesize managedObjectContext = _managedObjectContext; @synthesize managedObjectModel = _managedObjectModel; @synthesize persistentStoreCoordinator = _persistentStoreCoordinator; – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RKLogConfigureByName("RestKit", RKLogLevelWarning); RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace); RKLogConfigureByName("RestKit/Network", RKLogLevelTrace); RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://192.168.1.3:3010/"]]; RKManagedObjectStore *objectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:self.managedObjectModel]; objectManager.managedObjectStore = objectStore; RKEntityMapping *playerMapping = [RKEntityMapping mappingForEntityForName:@"Player" inManagedObjectStore:objectStore]; [playerMapping […]

RestKit postObject方法中的post对象和它返回的RKMappingResult之间有什么关系?

我一直在浏览RestKit的文档,但是我还没有能够解决RKMappingResult一些细节问题。 我有创buildNSManagedObject ,称为newUser ,并插入mainQueueManagedObjectContext的mainQueueManagedObjectContext的代码。 然后使用我的对象pipe理器的postObject:path:parameters:success:failure:方法将用户发布到服务器。 这似乎工作正常。 当发布请求完成时,我需要更新newUser托pipe对象上的一些字段,这些字段不会根据发布请求的结果进行映射。 传递到块中的mappingResult参数似乎具有与从服务器的响应中设置的所有字段正确映射的托pipe对象。 显然, mappingResult中的对象与我发布的对象不是同一个对象,因为它们不在同一个线程中。 如果我在发布之前保存新newUser ,请求完成后它们的objectID是否相同,并返回映射结果? 我在想象,新newUser和映射结果中的对象都指向存储在CoreData中的同一个对象,是正确的吗? 我问的原因是,这似乎并非如此。 如果我发出一个发布请求并同时保存新的newUser对象和映射结果中返回的对象,我最终在Core Data中有两个不同的对象,一个用于newUser ,一个用于映射结果。 我通过更改newUser对象和newUser对象上的字段,并确认它们都是独立更改来确认这一点。 此外,我下次获取时,获取两个用户对象。 我如何防止这种情况? 如果这是正确的,如果我崩溃会发生什么,请求还没有完成? CoreData中不会有一个存根对象吗? 如果请求失败,如何删除我创build的存根对象? 我可以在失败区域做类似以下的事情吗? dispatch_async(dispatch_get_main_queue(), ^{ [newUser.managedObjectContext deleteObject:newRegisteredUser]; }); 新用户在哪里,是我在mainQueue上创build的托pipe对象。 最后,如果我通过映射结果在后台线程中取回托pipe对象,则无法将返回的用户设置为UI用于从主线程获取信息的用户,那么如何通知用户界面改变它的用户? 我应该发布一个通知,告诉用户界面从Core Data重新获取活动用户吗? 更新关于重复的对象 我做了一些进一步的testing,我肯定会得到一个重复的对象,当职位返回。 我首先创build一个新的newUser并设置属性: HNGRRegisteredUser *newUser = [NSEntityDescription insertNewObjectForEntityForName:@"RegisteredUser" inManagedObjectContext:context]; newUser.firstName = @"John" newUser.lastName = @"Smith" newUser.gender = @"Male" newUser.email = @"js@email.com" newUser.hungrosityModel […]

收到对象restkit v0.20.3后主线程被阻塞

一旦我从服务器获取数据,它将使用Entity mapping保存在持久性存储中。 然后我manually delete这些对象。 现在,当我试图再次拉相同的数据时,我得到的错误说,映射HTTP响应无目标对象… RKObjectmapperoperation失败。 主线程被阻塞的可能是其中的pipe理上下文在删除后没有对象图。 我不知道如何解决这个错误,我试图重置持久性存储。 UPDATE – (void)saveThreadedContext { NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; [defaultCenter addObserver:self selector:@selector(mergeThreadedContextChangesIntoMainContext:) name:NSManagedObjectContextDidSaveNotification object:self.threadedContext]; if ([[self threadedContext] hasChanges]) { NSError *error; BOOL contextDidSave = [[self threadedContext] save:&error]; if (!contextDidSave) { // If the context failed to save, log out as many details as possible. NSLog(@"Failed to save […]

基于时间的同步与restkit

我们的应用程序使用Web API,也使用核心数据。 我们正在成功使用Restkit在应用程序和数据库之间发送和接收数据。 但是,我们在实现服务器和应用程序之间的条件同步时遇到困难。 服务器上的其中一个表具有“updated_at”字段。 该表对应于我们的iOS应用程序上的NSManagedObject。 我们试图build立一种更新设备上的pipe理对象的方法,只有当从服务器调用的'updated_at'字段比设备上的'updated_at'字段更新或更晚时。 看起来,RKObjectManager在调用完成块之前映射到核心数据,因此不允许我们在完成块中执行必要的同步逻辑。 如果有可能的话,是否有人能够概括地说明我们正在尝试做什么可以使用Restkit来实现。

RestKit – 无法显示JSON数据到我的tableView

我正在使用Rest Kit 0.20.3和带有核心数据的Xcode 5。 我从我的服务器收到JSON数据,但我无法在tableView控制器上显示它。 这里是AppDelegate.m中的映射和响应描述符代码 RKEntityMapping *playerMapping = [RKEntityMapping mappingForEntityForName:@"Player" inManagedObjectStore:managedObjectStore]; [playerMapping addAttributeMappingsFromDictionary:@{@"id": @"playerID", @"name": @"playerName", @"age": @"playerAge", @"created_at": @"createdAt", @"updated_at": @"updatedAt"}]; RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:playerMapping method:RKRequestMethodGET pathPattern:@"/players.json" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; [objectManager addResponseDescriptor:responseDescriptor]; 和我的代码为我的tableViewController.m GET方法 -(void)loadPlayers{ [[RKObjectManager sharedManager] getObjectsAtPath:@"/players.json" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){ [self.refreshControl endRefreshing]; NSLog(@"IT WORKED!"); self.fetchedResultsController = [mappingResult firstObject]; }failure:^(RKObjectRequestOperation *operation, […]

RestKit – 一次处理一个REST操作

我正在使用RestKit 0.20.3,并且需要按照一定的顺序完成一些REST操作( 来自一个REST操作的响应需要包含在下一个的请求参数映射中 )。 我试着设置队列来处理一次这样的操作: RKObjectManager.sharedManager.operationQueue.maxConcurrentOperationCount = 1; 并添加这样的操作: for (id insertedObject in insertedObjects) { [RKObjectManager.sharedManager postObject:insertedObject path:nil parameters:nil success:nil failure:nil]; } 但是我得到一个错误,因为第一个操作在另一个开始之前没有完全完成。 在检查日志时,似乎像这样执行: REST操作1 – 请求映射 REST操作2 – 请求映射 REST操作3 – 请求映射 REST操作1 – HTTP调用和响应映射 REST操作2 – HTTP调用和响应映射 REST操作3 – HTTP调用和响应映射 我已经尝试设置操作依赖关系,但这没有什么差别。 我需要一次完成一个REST操作。 我如何在RestKit中做到这一点?

RESTKit:在覆盖之前比较GET对象和本地持久化

核心数据中有一个保存的对象(保留)。 可以说下面是值: //Entity: employee objectID: 1111 firstName: @"Jon" lastName: @"D" modified: @"10:45PM" 现在,我执行一个RKManagedObjectRequestOperation *operation请求。 我设置了operation.savesToPersistentStore = NO; 并开始操作。 该对象被下载并被修改为以下内容: //Entity: employee objectID: 1111 firstName: @"Jonathan" lastName: @"Doe" modified: @"10:55PM" //I have 15 other properties that are either Strings, NSDate, NSNumber, and BOOLs 我相信在这个时候被修改的对象在managedObjectContext 如果Context的modifieddate不同,我想将Context每个attribute与核心数据中保留的attribute进行比较。 如果Context attribute与持久化attribute不同,我需要为每个属性属性触发一个标志。 一旦所有的属性都被窜改,我可以通过保存上下文来覆盖对象。 我想我必须手动检查: if (!([objectInCoreData valueForKey:@"firstName"] isEqualToString:[objectInContext valueForKey@"firstName"])) { firstNameValueChange […]

RestKit:为外键关系创build存根

我正在努力映射我的JSON API与RestKit返回的外键关系。 具体来说,我使用Loopback来生成一个API,像Team和User这样的实体。 有两个terminal默认情况下返回以下JSON: /团队/ [ { "title": "Team Title", "id": 1, } ] /用户/ [ { "name": "Alice", "id": 1, "teamId": 1, }, { "name": "Bob", "id": 2, "teamId": 1, }, … ] 现在这是一个非常简单的API,对吧? 使用RestKit进行映射应该很容易,但是即使在阅读所有关于该主题的其他问题之后(例如, 寻求有关浅层路由的最佳RestKit / CoreData映射和JSON结构的build议,使用RestKit的 外键关系映射 , Restkit:GET远程链接对象当外键指的是在核心数据中缺less本地对象 ),我只是不知道如何将整个对象图加载到核心数据。 如果它使事情变得简单,我当然也可以改变API。 出于显而易见的原因,我不希望在每个Userembedded整个Team对象,而是使用外键代替。 此外,我想保持端点分开,主要是因为这是Loopback默认生成API的方式。 所以我试着用下面的映射来调用两个Endpoints(按照一个不重要的顺序): Team映射 RKEntityMapping *teamMapping = [RKEntityMapping mappingForEntityForName:@"Team" inManagedObjectStore:objectManager.managedObjectStore]; [teamMapping […]

RESTKit POST请求教程

我想知道是否有关于如何使用RESTKit进行POST请求的具体教程。 我已经看了一些教程,但我还没有发现任何说,“这正是你如何做一个POST请求与RESTKit”。 非常感谢帮助。