0
他在那裏,我有一個簡單的樹結構的文件和文件夾。它是可以下載虛擬文件夾的客戶端 - 服務器應用程序的一部分。無論如何,我喜歡使用^塊異步編程。我有3個URL,第一個下載文件夾描述,第二個下載文件,第三個下載文件夾內容。 DSFolder是文件夾描述,DSFile從DSFolder繼承幷包含下載結果的NSData字段。文件夾下載的代碼如下所示:iPhone遞歸完成塊
- (void)loadFolderData:(DSFolder *)folder
finished:(void(^)(DSFolder *))finished
error:(void(^)(NSError *))error {
if (!folder) {
return;
}
for (DSFolder* fileOrFolder in folder.children) {
if ([fileOrFolder isFolder]) {
[self loadFolderData:fileOrFolder
finished:^(DSFolder * folder) {
// *********************************
// Next folder level would be a copy
// of the whole for loop in here
// *********************************
} error:^(NSError * err) {
if (error) {
error(err);
}
}];
} else {
[self loadFile:fileOrFolder.name
folder:folder.name
finished:^(NSData * data) {
((DSFile *) fileOrFolder).data = data;
} error:^(NSError * err) {
if (error) {
error(err);
}
}];
}
}
}
那麼我可以只複製了幾次內部循環界限樹層深度,但似乎非常難看。我希望這個問題是合理的。
該錯誤塊是不是安全的零值,但謝謝指出。並沒有完成錯誤處理。當完成所有文件和文件夾時,應該調用結束塊。你有一個想法如何編程?那麼路徑是正確的,文件層次結構沒有真正的a/b/c結構,它是用數據庫條目創建的,服務器知道如何處理它。 –