概述
我有一个 iOS 项目,我在其中将名称列表存储在表格视图中。
我了解打开/创建数据库的那一刻,有一个完成处理程序来执行一个方法。
脚步:
- 就我而言,第一个屏幕是显示名称的表格视图
- 有一个 + 按钮(在导航栏上)可以添加一个新名称,该名称会将其带到新屏幕以输入详细信息。
关心
我担心的是,如果我在完成处理程序中获取 tableview 的名称,并且如果用户不等待打开数据库并创建一个新名称,同时保存它,数据库可能不会打开/创建。
问题
- 如何处理这样的情况?
- 我错过了什么吗?
概述
我有一个 iOS 项目,我在其中将名称列表存储在表格视图中。
我了解打开/创建数据库的那一刻,有一个完成处理程序来执行一个方法。
脚步:
关心
我担心的是,如果我在完成处理程序中获取 tableview 的名称,并且如果用户不等待打开数据库并创建一个新名称,同时保存它,数据库可能不会打开/创建。
问题
真的,在一切初始化之前,您不应该允许用户更改内容。如果需要一段时间,则只需禁用该功能,直到准备好。
在这种情况下,这很容易。从禁用“添加”按钮开始,并在完成处理程序中启用它。
您可以编写一个 documentIsReady 方法(这将启用编辑,以及在“一切就绪”时您想做的任何其他事情),然后在文档准备好使用时调用它。例如,请参见下面的代码。
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];
}
好吧,处理这种情况的一种(简单)方法是添加一个计时器以等待数据库打开/创建。您也可以将按钮(+ 按钮)变灰,直到数据库准备就绪。