Re: [問題] XCode5 測試連續建立UIDocument會失敗

看板MacDev作者 (彼得湯姆)時間11年前 (2013/10/06 12:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
感謝回應.. 這是一個方向,我會來試試看。 只是好奇的是,我是使用XCode5的XCTest來測試... 在我的測試程式中, 他的流程應該是: setup()時建立UIDocuemnt testNothing1 teardown()時刪掉UIDocument setup()時建立UIDocuemnt testNothing2 teardown()時刪掉UIDocument setup()時建立UIDocuemnt testNothing3 teardown()時刪掉UIDocument 前面兩次都是對的 到testNothing3時卻在setup()就會回error code 5 囧 ※ 引述《darktt (小朱)》之銘言: : 我在使用非同步的控制也有相同問題的經驗, : 不過我用的是 NSArray enumerateObjectsUsingBlock: ,它也是採用非同步的方式, : 我使用這個是要將選到的多個檔案透過網路上傳某個地方, : 因為上傳的時候必須要一個一個傳,所以這時後因為非同步的關係, : 全部檔案都一起上去了。 : 簡單介紹到此為止, : 我想說的是,你想等待非同步做完才回傳的話,你只能利用 block 做回傳的動作, : 我測試過的用 while 與 NSLock 都沒有作用, : 尤其是 while 在 compiler 的過程中為了避免造成無窮迴圈,所以做了點手腳, : 所以你該做的是將 UIManagedDocument 的 saveToURL:forSaveOperation: 回傳的 block : 接上自己的做的 block 才行。 : 像是這樣子 : - (void)createTestDocumentWithResultBlock:(void (^) void)resultBlock : { : NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; : url = [url URLByAppendingPathComponent:@"TestDocument"]; : self.document = [[UIManagedDocument alloc] initWithFileURL:url]; : [self.document saveToURL:url forSaveOperation:UIDocumentSaveForCreating : completionHandler:^(BOOL success){ : if (success) { : resultBlock(); : NSLog(@"Create document successfully"); : } : }]; : } : 之後在 block 接第二次與第三次的建立就好了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.193.165
文章代碼(AID): #1IKEJYN2 (MacDev)
文章代碼(AID): #1IKEJYN2 (MacDev)