我试图使用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