我有一个函数,它接受一个 URL 并异步返回一个文件 URL,当我在 completion
block 中打印 fileURL
的值时,它会完美地打印出来,但是变量 (fileURL
) 不会保留 completion
block
FileFactory.FetchFileWithURL(workingURL, completionHandler: { (url) -> Void in
fileURL = url
print(fileURL) //prints valid URLs
})
print(fileURL) //prints nil
fileURL
定义为:-
var fileURL:String?
如何确保 fireURL
保留从 completion
block 获取的值?
编辑:
发现类似的问题,但不幸的是它在 objc
here 中
Swift 中是否有与 Objective-C 的 __block
等效的东西
最佳答案
在 block 内调用一个新函数。在新方法中使用 fileURL
执行您想要执行的操作。
FileFactory.FetchFileWithURL(workingURL, completionHandler: { (url) -> Void in
fileURL = url
print(fileURL) //prints valid URLs
doSomethingWithFileUrl(url)
})
关于ios - 如何保留在完成 block 中设置的局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35251009/