我有一个函数,它接收一个URL并异步返回一个文件URL,当我在fileURL
块中打印出completion
块的值时,它会完美打印出来,但变量({{1} })不保留fileURL
块
completion
FileFactory.FetchFileWithURL(workingURL, completionHandler: { (url) -> Void in
fileURL = url
print(fileURL) //prints valid URLs
})
print(fileURL) //prints nil
定义为: -
fileURL
如何确保var fileURL:String?
保留fireURL
阻止的值?
编辑:
发现了类似的问题,但不幸的是它出现在completion
here
在swift
中是否有任何等效的Objective-Cobjc
答案 0 :(得分:3)
调用块内的新函数。在新方法中使用fileURL
做你想做的事。
FileFactory.FetchFileWithURL(workingURL, completionHandler: { (url) -> Void in
fileURL = url
print(fileURL) //prints valid URLs
doSomethingWithFileUrl(url)
})
答案 1 :(得分:0)
FetchWithURL
是一个异步函数。 fileUrl
在completionHandler
中实例化,只有在异步任务完成后才会调用fileUrl
。因此,根本不可能使用尚不存在的值。
需要使用completionHandler
完成的任何操作必须在同一FileFactory.FetchFileWithURL(workingURL, completionHandler: { (url) -> Void in
fileURL = url
print(fileURL) //prints valid URLs
//other operations with fileURL
})
内完成。
--name some-postgres