概览
我有一个 iOS 项目,在该项目中我将姓名列表存储在 TableView 中。
我理解在打开/创建数据库的那一刻,有一个完成处理程序来执行一个方法。
步骤:
- 在我的例子中,第一个屏幕是一个显示名称的表格 View
- 有一个 + 按钮(在导航栏上)用于添加新名称,这会将其带到新屏幕以输入详细信息。
关注
我担心的是,如果我在完成处理程序中获取 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];
}
关于iOS - 核心数据 - 成功创建/打开之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150821/