我試圖使用RestKit和核心數據的服務器端DATAS的本地緩存,但我不能設法做保存對象與Restkit核心數據刪除後,使其崩潰
我創建一個NSManagedObject:
@interface JSONShop : NSManagedObject
@property (nonatomic, retain) NSNumber * shopId;
@property (nonatomic, retain) NSNumber * type;
@end
@implementation JSONShop
@synthesize shopId;
@synthesize type ;
@end
據自動映射和由Restkit存儲,並且我可以從數據庫中獲取它在TableViewController來顯示它。
我有我的表的主鍵(在我的映射定義的),例如:
shopMap.primaryKeyAttribute = @"shopId" ;
當我存儲我的第一次的對象,一切都很好:)
後,當我刪除在上下文中的所有實體,當Restkit嘗試重新映射,並再次保存它,但我得到這個錯誤:
'CoreData could not fulfill a fault for '0x9412ea0 <x-coredata://F8451322-3890-430F-8ABD-B5EEF1DFED2F/JSONShop/p177>''
你知道爲什麼嗎?
這裏是我的刪除代碼:
- (void) deleteAllObjects: (NSString *) entityDescription {
NSLog(@"Deleting %@",entityDescription);
NSManagedObjectContext * managedObjectContext = [[RKObjectManager sharedManager].objectStore managedObjectContext] ;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityDescription inManagedObjectContext:managedObjectContext];
NSError * error ;
[fetchRequest setEntity:entity];
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *managedObject in items) {
[managedObjectContext deleteObject:managedObject];
}
if (![managedObjectContext save:&error]) {
NSLog(@"Error deleting %@ - error:%@",entityDescription,error);
}
}
刪除和下載/保存是否發生在同一個線程上,然後在刪除然後保存順序? – shawnwall 2012-01-30 13:27:26
我這麼認爲,事情是按照這個順序在MainThread上完成的1.獲取存儲Core數據中的數據的Restkit 2.手動刪除數據3.使用Restkit再次獲取=>崩潰 – Julien 2012-01-30 13:35:48
並且您在所有的環境中使用相同的managedObjectContext這些? – shawnwall 2012-01-30 13:41:24