Tag: restkit

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:在普通的旧Objective-C对象内映射的托pipe对象

序言:我使用的RestKit 0.21.0,但我也试过0.23.0。 我有一个简单的旧的Objective-C对象(我们称之为POOCO)包含一个NSManagedObject的映射。 似乎在对这个根POOCO执行GET请求时,托pipe对象是在mainQueueManagedObjectContext下创build的。 但是,当我对POOCO执行PUT时,当加载响应(响应是发送的对象的副本)时,托pipe子对象在临时NSManagedObjectContext下创build,其父对象是mainQueueManagedObjectContext 。 快速抛开RestKit中的重新获取: 如果请求完全由NSManagedObject实例组成, NSManagedObject使用(我认为) mainQueueManagedObjectContext来“重新获取”结果对象。 (IIRC,一旦所有对象映射完成,对象和子对象将全部从主MOC中重新获取,replace在用于映射的临时MOC上创build的对象。 这个重新写入是完成的(据我所知),因为当一个MOC得到dealloc ,它pipe理的所有pipe理对象变得无效 。 因此,我们重新获取MOC中的对象, myObjectManager.managedObjectStore保留强引用,以便在临时MOC消失后保持有效。 由于映射中的根对象是一个POOCO,所以它对pipe理对象的任何引用都不会被重新获取 ,所以它们仍然附着在临时MOC上,一旦映射完成就会失效。 有没有人遇到这样的问题? 有什么可以build议的最佳做法? 是否有可能告诉RestKit,“使用mainQueueManagedObjectContext重新获取这些托pipe对象”或类似的东西?

Restkit路由错误

我正在尝试做一个简单的职位login屏幕。 我发布一个电子邮件地址和密码。 这给了我一个带有状态码的JSON。 如果这个代码是200,它也包含一个person对象。 如果是其他东西,它包含一个错误对象。 我有这个张贴的代码。 RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://******.com.be/nl/webservice/company-user/login/apikey/key**"]]; NSDictionary *dictionary = @{ @"email": _txtLogin.text, @"pwd": _txtPass.text}; NSMutableURLRequest *request = [manager requestWithObject:nil method:RKRequestMethodPOST path:nil parameters:dictionary]; RKObjectRequestOperation *operation = [manager objectRequestOperationWithRequest:request success:^(RKObjectRequestOperation *operation, RKMappingResult *result) { NSLog(@"Loading mapping result: %@", result); } failure:nil]; [operation start]; 但是这个代码导致了下面的错误。 *** Terminating app due to uncaught exception […]

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链接器错误

我一直在关注RestKit安装说明,但是现在我尝试构build应用程序时出现错误。 这是针对ios,iPad的具体情况。 我得到“命令/开发/平台/ iPhoneSimulator.platform/Developer/usr/bin/clang失败,退出码1” 描述: Ld build/Debug-iphonesimulator/iDoor.app/iDoor normal i386 cd "/Users/User/Dropbox/darxstudios/FatCow Games/iDoor" setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 – isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk "-L/Users/User/Dropbox/darxstudios/FatCow Games/iDoor/build/Debug-iphonesimulator" "-F/Users/User/Dropbox/darxstudios/FatCow Games/iDoor/build/Debug-iphonesimulator" -filelist "/Users/User/Dropbox/darxstudios/FatCow Games/iDoor/build/iDoor.build/Debug-iphonesimulator/iDoor.build/Objects-normal/i386/iDoor.LinkFileList" -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -ObjC – all_load -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework Security -lxml2 -framework SystemConfiguration -framework MobileCoreServices -framework CoreData -framework CFNetwork -framework […]

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对象pipe理器设置超时间隔

我正在使用RESTKIT对象pipe理器从我的服务器获取信息。 我的实现代码片段如下: -(void)getObjects { //Instantiate the RestKit Object Manager RKObjectManager *sharedManager = [RKObjectManager sharedManager]; //show the spinner [self showLoading]; //call server with the resourcepath [sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self]; } – (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { // handling in scenarios of empty arrays if ( [objects count]==0 ){ [self hideLoading]; if (emptyHandler){ emptyHandler(); }else{ [self standardEmptyHandling]; } return; } […]

如何在RESTkit 0.2中设置caching策略

我不清楚如何使用RESTKit 0.2 API来设置caching策略。 每当我打开应用程序时,我都有一个正在重新运行的请求,但是我希望它被caching。 如何将caching策略设置为始终caching请求? 更新我了解到,RestKit会自动cachingCore Data支持的映射。

Restkit一对多的关系追加设置,而不是设置一个新的集合

我有一个iOS Restkit相关的问题。 我有一个来自远程服务器的父子关系数据,并使用Restkit将这些对象映射到一个NSManagedObject对象。 我目前遇到的问题是对服务器的每个请求都会消除“子”关系,并将其replace为来自服务器的新数据。 有没有办法避免这些,并添加新的孩子呢? 例如:我有一个经典的类别 – >产品关系。 {"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": [ { "prod_id": "1", "prod_name": "product 1", "prod_tag": 1 }, { "prod_id": "2", "prod_name": "product 2", "prod_tag": 1 } ] } ] } 这工作正常,一切都保存与CoreData的关系。 但是,如果我再向服务器发出一个请求,并有新的回应: {"categories": [ { "cat_id": "1", "cat_title": "category 1", "cat_tag": 1, "product": […]

Restkit,禁用caching

我很难尝试在Restkit框架中禁用caching。 我已经尝试将caching策略设置为none,根本没有任何效果。 什么是正确的方法来做到这一点?