我已经看到了其他几个关于此的线索,但还没有找到一个好的解决方案。这是我在崩溃报告中看到的崩溃,虽然我无法自己重现:
Fatal Exception: NSObjectInaccessibleException
CoreData could not fulfill a fault for '0xd00000001ff80004...
以下是确切的代码:
NSDictionary *newCats = (cats from server)
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
NSMutableSet *existingIds = [NSMutableSet set];
NSArray *allCats = [Cat MR_findAllInContext:localContext];
for (Cat *cat in allCats) {
if (cat.managedObjectContext != nil) {
[existingIds addObject:cat.cat_id]; //CRASH!!!
}
}
NSMutableArray *newIds = [NSMutableArray array];
for (NSDictionary *catData in newCats) {
NSString *catId = catData[@"id"];
[newIds addObject:catId];
[existingIds removeObject:catId];
}
for (NSString *sId in existingIds) {
Cat *cat = [Cat MR_findFirstByAttribute:@"cat_id" withValue:sId inContext:localContext];
[cat MR_deleteEntityInContext:localContext];
}
}
正如您所看到的,我只是想收集现有ID的列表,因此我可以与从服务器收到的ID进行比较,并删除服务器上不再存在的本地Cats。
任何人都可以对此有所了解吗?用户在这里看到了大量的崩溃。