我不确定如何处理块。例如,在我的 viewDidLoad 中,我调用了一个函数“useDocument”来设置 Core Data。我希望一旦 Core Data 准备好使用,就会调用另一个函数来处理一些查询。就像 ASIHTTPRequest一样,当客户端收到响应时,会调用一个函数来处理响应。
我猜触发函数不是使用块的正确方法。但正确的方法是什么?
- (void)useDocument
{
if (!self.database) {
self.database = [DataModelDocument sharedDocument];
}
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.database.fileURL path]]) {
// does not exist on disk, so create it
[self.database saveToURL:self.database.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
if (!success) {
NSLog(@"database doesn't exist on disk, we fail to create it");
}
}];
} else if (self.database.documentState == UIDocumentStateClosed) {
// exists on disk, but we need to open it
[self.database openWithCompletionHandler:^(BOOL success) {
if (!success) {
NSLog(@"database exists on disk, but we fail to open it");
}
}];
} else if (self.database.documentState == UIDocumentStateNormal) {
// already open and ready to use
}
}