をクラッシュさせるRestkitとコアデータに削除したオブジェクトを保存NSManagedObject:後に、それは私が作成した私は、サーバー側件のデータのローカルキャッシュとしてRestKitとコアデータを使用しようとしているが、私はそれを</p> <p>を行うために管理することができない
@interface JSONShop : NSManagedObject
@property (nonatomic, retain) NSNumber * shopId;
@property (nonatomic, retain) NSNumber * type;
@end
@implementation JSONShop
@synthesize shopId;
@synthesize type ;
@end
それは自動的にマッピングされRestkitによって記憶され、そしてIは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
私はそう考えています、この順番でMainThreadで作業が行われていると思います。1.コアデータにデータを格納するRestkitを使ってフェッチする2.手動でデータを削除する3. Restkit =>クラッシュで再度フェッチする – Julien
そして、これら? – shawnwall