PFFile返回nil可选值 - Swift 1.2

时间:2015-04-16 15:52:43

标签: ios swift parse-platform

我在获取Parse图像文件(PFFile)时遇到问题。

   Usersclass { 
       var resultsUsernameArray = [String]() 
       var imageFiles = [PFFile]()
  }


  override func viewDidAppear(animated: Bool) {

    let predicate = NSPredicate(format: "username != '"+userName+"'")
    var query = PFQuery(className: "_User", predicate: predicate)


    if let objects = query.findObjects() {
        for object in objects {

            var user:PFUser = object as! PFUser
            self.resultsUsernameArray.append(user.username!)

            if object["photo"] != nil {

                self.imageFiles.append(object["photo"] as! PFFile)
               // this is where I get error

                self.resultsTable.reloadData()

            }
        }
    }

}

它过去工作正常,但使用Swift 1.2,似乎有问题。我得到的错误是: “警告:正在主线程上执行长时间运行的操作。  打破warnBlockingOperationOnMainThread()进行调试。 致命错误:在展开Optional值时意外发现nil (lldb)

1 个答案:

答案 0 :(得分:0)

你正在主队列上执行提取,所以我很惊讶这有效。警告告诉您正在尝试在主线程上执行长时间运行的操作。您应该在后台将findObjects()来电更改为来电,例如findObjectsInBackground,如下所示:

query.findObjectsInBackgroundWithBlock({ (NSArray array, NSError error) -> Void in
    for object in objects {

        var user:PFUser = object as! PFUser
        self.resultsUsernameArray.append(user.username!)

        if object.objectForKey("photo") != nil {

            self.imageFiles.append(object.objectForKey("photo") as! PFFile)
           // this is where I get error

            self.resultsTable.reloadData()

        }
    }            
})