iOS - 核心数据 - 成功创建/开放之前

时间:2012-04-14 03:46:52

标签: ios core-data uimanageddocument

概述

我有一个iOS项目,我在其中存储了一个名单列表。

我理解数据库打开/创建的那一刻,有一个完成处理程序来执行一个方法。

步骤:

  1. 就我而言,第一个屏幕是一个显示名称
  2. 的表格视图
  3. 有一个+按钮(在导航栏上)添加一个新名称,可以将其带到新屏幕输入详细信息。
  4. 我担心的是,如果我在完成处理程序中获取tableview的名称,并且如果用户没有等待打开数据库并创建新名称,则在保存数据库时,可能无法打开数据库/创建。

    问题

    1. 如何处理这种情况?
    2. 我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

实际上,在初始化所有内容之前,您不应该允许用户更改内容。如果需要一段时间,那么只需禁用该功能直到准备就绪。

在这种情况下,这很容易。首先禁用“添加”按钮,然后在完成处理程序中启用它。

你可以编写一个documentIsReady方法(它将启用编辑,以及当“all ready。”时你想要做的任何其他事情。),然后在文档准备好使用时调用它。例如,请参阅下面的代码。

    if (![[NSFileManager defaultManager] fileExistsAtPath:[doc.fileURL path]]) {
        [doc saveToURL:doc.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else if (doc.documentState == UIDocumentStateClosed) {
        [doc openWithCompletionHandler:^(BOOL success) {
            [self documentIsReady: success];
        }];
    } else {
        BOOL success = doc.documentState == UIDocumentStateNormal;
        [self documentIsReady: success];
    }

答案 1 :(得分:1)

好吧,处理这种情况的一种(简单)方法是添加一个等待数据库打开/创建的计时器。您也可以将按钮(+按钮)灰显,直到数据库准备就绪。