2012-09-29 38 views
3

看来,完成处理程序块永远不会被调用。这是否意味着保存失败?我在控制台中输入self.document.fileURL,这似乎有效。保存到URL的UIDocument失败?

[self.document saveToURL:self.document.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { 
// set breakpoint here, but it won't stop 
      [[[Fetcher alloc]init] fetchImageFromSring:HTTP_REQUEST inContext:self.document.managedObjectContext]; 
     }]; 

回答

1

完成处理块可以应用在任何的保存是否成功

关于completionHandler从apple

completionHandler
当保存操作结束时执行的代码块调用。该块返回没有值并且有一个参数:
成功
是,如果保存操作成功,否则为否。
该块在调用队列上被调用。

有你把一个断点在这条线,以确保它运行

[self.document saveToURL:self.document.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) { 

编辑
我相信这个问题可以是你正在使用哪种类型的调试器。 (from this SO question)
确保您使用的lldb

即使你不改变调试器,你总是可以验证块与NSLog(@"block is running, save successfully - %d", success)

+0

是的,我把一个断点执行,它并运行。然而,完成块内部的行不会运行 – Philip007

+0

@ Philip007尝试使用NSLog或更改调试器。如果你不知道如何改变调试器,我可以拼出来。 –

+0

谢谢,我终于发现'BOOL success'只是一个辅助变量,我可以在完成处理程序块中使用。我可以使用'if success == YES'来确定保存操作是成功还是失败,然后以不同的方式处理。 – Philip007