我有一个具有异步请求的递归函数。如果请求成功,我想保存在一个数组中,但我不知道如何。 具体它是一个上传文件的功能,如果该功能得到的文件夹比该文件夹内的文件还要上传。具有异步请求的递归函数
我想过用completionHandler,一些有关这个工具的:
func uploadFiles(pathToFile: NSURL) ->[Bool]{
var suc: [Bool] = [Bool]()
self.uploadFileRec(pathToFile, suc: &suc){
(result: [Bool]) in
println(result)
}
return suc
}
func uploadFilesRec(pathToFile: NSURL, inout suc: [Bool], completionHandler: (result: [Bool]) -> Void){
var isDir: ObjCBool = ObjCBool(true)
var manager: NSFileManager = NSFileManager.defaultManager()
manager.fileExistsAtPath(pathToFile.path!, isDirectory: &isDir)
if(isDir){
var error: NSError? = nil
let contents = manager.contentsOfDirectoryAtPath(pathToFile.path!, error: &error) as! [String]
for fileName in contents {
if(fileName != ".DS_Store"){
var pathString = pathToFile.path! + "/" + fileName
var updatePathtoFile = NSURL(fileURLWithPath: pathString)
self.uploadFilesRec(updatePathtoFile!, suc: &suc, completionHandler: completionHandler)
completionHandler(result: suc)
}
}
}
else{
asyncFileUpload(...){
...
suc.append(/*successful or not*/)
}
}
}
但问题是,得到的println调用不仅是时间,但多达uploadFileRec进去叫。因此,如果我要调用另一个函数而不是println,该函数也会被调用很多次。 所以我认为用completionHandler这个想法是错误的。我还能怎样才能认识到这一点?
好的谢谢。特别是你的渴望点。我没有意识到这一点。 – boddAh234
你有一个想法,我的问题与“递归异步函数成功或不是数组”吗? – boddAh234