Я пытаюсь использовать RestKit и Core Data в качестве локального кэша данных на стороне сервера, но мне не удается это сделать
Я создал 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);
}
}