【发布时间】:2014-10-06 06:54:02
【问题描述】:
所以我在我的 swift 应用程序中遇到了闭包问题,我在其中尝试将 parse 用作 BaaS。特别是我不明白为什么我不能在闭包内分配一个变量并在它之外访问它。我的代码看起来像:
class SecondView: UIViewController {
@IBOutlet var label:UILabel!
var budgetInfo:NSArray = []
var item:PFObject!
override func viewDidLoad() {
super.viewDidLoad()
var query = PFQuery(className: "Budget")
query.whereKey("creditor", equalTo: "rent")
query.getFirstObjectInBackgroundWithBlock({
(object:PFObject!, error:NSError!) in
self.label.text = NSString(format: "%@", object.objectForKey(key: "amount") as NSNumber)
})
}
当我尝试在这样的块中分配var item:PFObject! 时,这段代码可以完美运行:
class SecondView: UIViewController {
@IBOutlet var label:UILabel!
var budgetInfo:NSArray = []
var item:PFObject!
override func viewDidLoad() {
super.viewDidLoad()
var query = PFQuery(className: "Budget")
query.whereKey("creditor", equalTo: "rent")
query.getFirstObjectInBackgroundWithBlock({
(object:PFObject!, error:NSError!) in
self.item = object
})
label.text = NSString(format: "%@", item.objectForKey("amount") as NSNumber)
}
我得到一个异常状态
unexpectedly found nil when unwrapping optional
所以很明显 item 变量没有在闭包中被赋值,所以这是否意味着我应该在闭包中分配我的所有值,或者我是否遗漏了一些东西?任何帮助将不胜感激。
【问题讨论】:
标签: swift parse-platform ios8