将全局变量传递给闭包
passing a global variable to a closure
我正在尝试根据操作 sheet 选择实现排序,其中排序发生在处理程序中,但我无法将要排序的数组传递给处理程序。这是我的代码:
let byWage = UIAlertAction(title: "By Wage", style: UIAlertActionStyle.Default, handler: { action in
unclaimedJobs.sort() { [=10=].wage > .wage }
})
其中 unclaimedJobs
是一个全局变量。执行此操作的最佳方法是什么?
编辑:我在这里声明 unclaimedJobs
:
class JobsListViewController: UITableViewController, UITableViewDataSource {
var jobsList: JobsList!
var unclaimedJobs: [Job]!
我在viewDidLoad()
初始化了它。
编辑#2:我知道您需要将 UIAlertAction
传递给闭包,所以我将 (unclaimedJobs)
替换为 action.
上次编辑:我用 self.unclaimedJobs
代替 unclaimedJobs.
解决了这个问题
不是 100% 确定。不过我觉得是这个。
let byWage = UIAlertAction(title: "By Wage", style: .Default, handler: {(alert: UIAlertAction!) in unclaimedJobs.sort({[=10=] > }) })
如果您在闭包中引用一个对象,则需要对其进行显式引用。在你的情况下,它可能是 - self: like in self.unclaimedJobs。但是,你必须在闭包中像 [unowned self] 一样取消拥有这个对象,否则你会发生内存泄漏。
我正在尝试根据操作 sheet 选择实现排序,其中排序发生在处理程序中,但我无法将要排序的数组传递给处理程序。这是我的代码:
let byWage = UIAlertAction(title: "By Wage", style: UIAlertActionStyle.Default, handler: { action in
unclaimedJobs.sort() { [=10=].wage > .wage }
})
其中 unclaimedJobs
是一个全局变量。执行此操作的最佳方法是什么?
编辑:我在这里声明 unclaimedJobs
:
class JobsListViewController: UITableViewController, UITableViewDataSource {
var jobsList: JobsList!
var unclaimedJobs: [Job]!
我在viewDidLoad()
初始化了它。
编辑#2:我知道您需要将 UIAlertAction
传递给闭包,所以我将 (unclaimedJobs)
替换为 action.
上次编辑:我用 self.unclaimedJobs
代替 unclaimedJobs.
不是 100% 确定。不过我觉得是这个。
let byWage = UIAlertAction(title: "By Wage", style: .Default, handler: {(alert: UIAlertAction!) in unclaimedJobs.sort({[=10=] > }) })
如果您在闭包中引用一个对象,则需要对其进行显式引用。在你的情况下,它可能是 - self: like in self.unclaimedJobs。但是,你必须在闭包中像 [unowned self] 一样取消拥有这个对象,否则你会发生内存泄漏。