我在使用RestKit的項目中。我們使用0.9.2版本,直到我們決定升級到0.10.0。在我的代碼中做了一些小的更改以使其與新版本的RestKit兼容後,我在使用loadObjectsAtResourcePath:usingBlock:時發現錯誤。當我在代理中使用函數 - (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)對象接收到響應時,對象數組具有正確的對象,但它們不保存在coreData的緩存中。如果我試圖通過對coreData的訪存來訪問它們,我不會找到它們。這裏是一些代碼,我用:RestKit的更新RestKit:loadObjectsAtResourcePath:usingBlock:不要將對象保存在緩存中
配置:
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:[NSURL URLWithString:@"http://myweb.com/web/app.php/ws"]];
objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = NO;
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"db.sqlite"];
RKManagedObjectMapping* boAccount = [RKManagedObjectMapping mappingForClass:[BOAccount class] inManagedObjectStore:objectManager.objectStore];
boAccount.primaryKeyAttribute = @"boAccountID";
[boAccount mapKeyPathsToAttributes: @"id", @"boAccountID",
@"created_at", @"createDate",
@"date_expiration", @"expirationDate",
@"date_billing", @"billingDate",
@"nb_authorized_devices", @"numberOfAuthorizedDevices",
nil];
[objectManager.mappingProvider addObjectMapping:boAccount];
[objectManager.mappingProvider setMapping:boAccount forKeyPath:@"account"];
調用加載loadObjectsAtResourcePath:usingBlock:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/connection" usingBlock:^(RKObjectLoader *loader){
RKParams *params= [RKParams params];
//[params setValue:_password.text forParam:@"password"];
[params setValue:[Encrypt encryptWithPublicKeyMessage:_password.text] forParam:@"password"];
[params setValue:_email.text forParam:@"email"];
[params setValue:udid forParam:@"udid"];
[params setValue:name forParam:@"name"];
loader.delegate = self;
loader.params= params;
loader.method= RKRequestMethodPOST;
} ];
- (空)objectLoaderDidFinishLoading:(RKObjectLoader *)objectLoader {
BOAccount* account;
NSArray* accounts = [BOAccount allObjects];
account = [accounts objectAtIndex:0];
}
但是數組帳戶是空的。我試過 - (無效)objectLoaderDidFinishLoading :(RKObjectLoader *)objectLoader {太但它給了我相同的結果。我知道我可以用數組對象獲得我想要的對象,但是我需要在我的項目中擁有DB中的對象。我知道這些對象很好解析,因爲我看到了objectLoaderDidFinishLoading的數組對象,並且都是正確的。
任何人都知道發生了什麼事?更新之前,此功能正常工作!
更新: 我發現,如果我從模擬器或iPad上刪除應用程序,有時它會在下次使用...我認爲它可以幫助翅膀得到答案。我可以嘗試在RestKit將它放入緩存之前使用這些項目嗎?