ios - 如何保留在完成 block 中设置的局部变量?

标签 ios swift swift2

我有一个函数,它接受一个 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/

相关文章:

ios - UITableView 滚动到单元格的顶部

为 UITabBarItem 快速设置徽章值

swift - "' [任何对象] ' is not convertible to ' [狗]?从CoreData获取数据时出现'"错误

iOS:循环依赖调用其他类中的方法

iphone - 在一部 iPhone 上安装同一应用程序的开发版本和 iTunes 下载版本

ios - enumerateGroupsWithTypes 循环没有停止

ios - 获取NSManagedObject属性验证正则表达式

ios - 无法在同一个 CGMutablePathRef 上创建两个 CGPathAddArc

swift - 可以像这样制作 UITextField 吗?

Swift 框架在模拟器上加载到 Objective C 应用程序中,但不在设备上加载