概述
我有一个iOS项目,我在其中存储了一个名单列表。
我理解数据库打开/创建的那一刻,有一个完成处理程序来执行一个方法。
步骤:
关
我担心的是,如果我在完成处理程序中获取tableview的名称,并且如果用户没有等待打开数据库并创建新名称,则在保存数据库时,可能无法打开数据库/创建。
问题
答案 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)
好吧,处理这种情况的一种(简单)方法是添加一个等待数据库打开/创建的计时器。您也可以将按钮(+按钮)灰显,直到数据库准备就绪。