我在获取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)“
答案 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()
}
}
})