首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDocument打不开

NSDocument打不开
EN

Stack Overflow用户
提问于 2012-10-01 13:31:06
回答 1查看 114关注 0票数 0

我正在制作我的第一个IOS应用程序,并使用JSON和核心数据来获取和存储数据。

但出于某种原因,它不会打开,它是NSDocument。这就是我要做的。

代码语言:javascript
复制
- (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。但后来突然停止了。我没有任何错误。

它通常应该做的是转到fetchFlickrDataIntoDocument方法。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 14:11:55

我认为应该在DB不存在时调用此方法[self fetchFlickrDataIntoDocument:self.genkDatabase];,因此您希望在文档目录中的磁盘上创建它。当您运行您的测试时,您的DB已经存在,只是还没有打开,所以您的程序尝试打开它。基本上,您只需遵循条件语句:if (self.genkDatabase.documentState == UIDocumentStateClosed)。我不明白为什么您的程序应该调用fetchFlickrDataIntoDocument:self,因为只有当您的DB不存在时,它才会发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12674312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档