Ios NSD文件赢得';t打开
我正在制作我的第一个IOS应用程序,并使用JSON和核心数据来获取和存储我的数据 但由于某种原因,它无法打开它的Ios NSD文件赢得';t打开,ios,objective-c,json,nsdocument,Ios,Objective C,Json,Nsdocument,我正在制作我的第一个IOS应用程序,并使用JSON和核心数据来获取和存储我的数据 但由于某种原因,它无法打开它的NSDocument。这就是我正在做的 - (void)useDocument { if (![[NSFileManager defaultManager] fileExistsAtPath:[self.genkDatabase.fileURL path]]) { // does not exist on disk, so create it [
NSDocument
。这就是我正在做的
- (void)useDocument
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.genkDatabase.fileURL path]]) {
// does not exist on disk, so create it
[self.genkDatabase saveToURL:self.genkDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
NSLog(@"test1");
[self setupFetchedResultsController];
NSLog(@"test12");
[self fetchFlickrDataIntoDocument:self.genkDatabase];
}];
} else if (self.genkDatabase.documentState == UIDocumentStateClosed) {
NSLog(@"test2");
// exists on disk, but we need to open it
[self.genkDatabase openWithCompletionHandler:^(BOOL success) {
NSLog(@"test4");
[self setupFetchedResultsController];
NSLog(@"test5");
}];
} else if (self.genkDatabase.documentState == UIDocumentStateNormal) {
NSLog(@"test3");
// already open and ready to use
[self setupFetchedResultsController];
}
}
- (void)setupFetchedResultsController // attaches an NSFetchRequest to this UITableViewController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"News"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"News.title" ascending:YES]];
// no predicate because we want ALL the Photographers
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.genkDatabase.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
NSLog(@"test10");
}
当您查看我的日志时,您会看到以下内容
测试2测试4测试10测试5
正如您所看到的,它成功地打开了它。然后执行方法setupFetchedResultsController
。但后来它突然停止了。我没有发现任何错误
它通常应该做的是转到fetchflickrdataintocument
方法
有人能帮我吗?我相信这个方法
[self-fetchflickrdataintocument:self.genkDatabase]代码>应该在数据库不存在时调用,因此您希望在文档目录中的磁盘上创建它。当您运行测试时,您的数据库已经存在,并且还没有打开,所以您的程序尝试打开它。基本上只需遵循条件语句:if(self.genkDatabase.documentState==UIDocumentStateClosed)
。我不明白为什么您的程序应该调用fetchFlickrDataIntoDocument:self
,因为它只应该在数据库不存在时发生