我正在使用MagicalRecord框架来“清理”核心数据代码。当应用程序启动或从后台恢复时,程序将尝试使用以下代码清理一些数据:
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
NSDate *date = [[NSDate date] dateByAddingTimeInterval:-259200];
NSFetchRequest *request = [NGCOwner MR_requestAllSortedBy:@"updatedTime" ascending:YES withPredicate:[NSPredicate predicateWithFormat:@"updatedTime < %@", date]];
NSArray *results = [NGCOwner executeFetchRequest:request inContext:localContext];
NSInteger count = MAX(0,[results count]-100); //do not delete the lastest 100 results
for (NSInteger i = 0; i < count; i++) {
NGCOwner *owner = [results objectAtIndex:i];
if([userId isEqualToString:owner.userId]){
continue;
}
[localContext deleteObject:owner];
}
}];
实体“NGCOwner”有17个关系,并将删除规则设置为Cascade。当程序删除NGCOwner实体(大约170 NGCOwner)时,它会使NSPersistentStoreCoordinator忙碌并冻结应用程序。
我可以强制NSPersistentStoreCoordinator不在主线程中执行吗?
启用核心数据日志后,我发现父上下文花费大部分时间来预取关系数据(这是正常的吗?)。