我正在开发一个与服务器通信并保存到核心数据的应用程序。
在 appDelegate 中,我启动了我的单例对象并调用 useDocument 来初始化 UIManagedDocument:
- (void)useDocument
{
if (![[NSFileManager defaultManager] fileExistsAtPath:self.database.fileURL.path]){
[self.database saveToURL:self.database.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:nil];
} else if (self.database.documentState == UIDocumentStateClosed){
[self.database openWithCompletionHandler:nil];
}
}
这是从服务器接收数据后的代码:
- (void)downloadCompletedWithData: (NSData *)data item: (TPDownloadItem *)finishedItem;
{
// parse data and update core
NSError *error;
id dataObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
if (dataObject && !error){
dispatch_async(dispatch_get_main_queue(), ^{
[User createUserWithInfo:dataObject inManagedContext:self.database.managedObjectContext];
});
}
}
这是写入核心数据的代码:
+ (id)createUserWithInfo: (NSDictionary *)userInfo inManagedContext: (NSManagedObjectContext *)aContext
{
NSError *error;
User *aUser = [NSEntityDescription insertNewObjectForEntityForName:ENTITY_NAME inManagedObjectContext:aContext];
NSString *userID = [userInfo objectForKey:USER_ID];
aUser.userID = userID;
aUser.effective = [NSNumber numberWithBool:[[userInfo objectForKey:USER_EFFECTIVE] boolValue]];
aUser.job = [userInfo objectForKey:USER_JOB];
aUser.gender = [userInfo objectForKey:USER_GENDER];
return aUser;
}
问题是,每当核心数据尝试自动保存(等待大约 30 秒)时,应用程序就会崩溃并出现以下错误:
我尝试使用 GCD 在主线程中调用“useDocument”和“createUser”,还覆盖 UIDocument“contentsForType”以确保它在自动保存后立即发生,文档状态在保存之前是正常的,并且还创建了持久性存储文件。
- 有没有人遇到过类似的情况?很感谢任何形式的帮助!!