因为Swift中的空值导致循环不执行

时间:2015-07-27 00:55:31

标签: ios swift for-loop parse-platform

我在StackOverFlow上阅读了很多与此事有关的问题,但仍然无法解决问题。问题是循环事件没有在下面的代码中运行。而且我认为这是由于空值。我创建了一个名为“function”的函数,并在Parse中查询我的类中的对象。我查询的所有对象都保存在HelperClass的属性events中。然后,我正在执行循环 添加event.numberOfViews以对数组中的所有数字求和。我正在调试代码,显然events数组是空的。我没有得到它,因为我只是将值放在evetns数组中。把招工广告!感谢

class ViewController: UIViewController {
HelperClass().function()
}


class HelperClass: NSObject {
    var events: [Event] = []
     var sumOfView: Double?

func function() {
     let eventQuery = PFQuery(className: "Event")
        eventQuery.limit = 1000
        eventQuery.findObjectsInBackgroundWithBlock { (result: [AnyObject]?, error: NSError?) -> Void in
            if (error == nil) {
                self.events = result as? [Event] ?? []
            } else {
                println("Error is \(error)")
            }
        }

for event in events {
            array.append(event.numberOfViews)
        }
      sumOfView = array.reduce(0) {return $0! + $1}
    }
}

1 个答案:

答案 0 :(得分:1)

findObjectsInBackgroundWithBlock在另一个线程上执行。如果你想用事件执行for循环,你需要在if语句中移动它。

if (error == nil) {
  self.events = result as? [Event] ?? []
  // perform for loop here
} else {
  println("Error is \(error)")
}