PFFile 返回 nil 可选值 - Swift 1.2
Posted
技术标签:
【中文标题】PFFile 返回 nil 可选值 - Swift 1.2【英文标题】:PFFile returning nil Optional Value - Swift 1.2 【发布时间】:2015-04-16 15:52:43 【问题描述】:我在获取 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() 进行调试。 致命错误:在展开可选值时意外发现 nil (lldb) "
【问题讨论】:
【参考方案1】:您正在主队列上执行 fetch,所以我很惊讶这能奏效。警告告诉您您正在尝试在主线程上执行长时间运行的操作。您应该将您的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()
)
【讨论】:
以上是关于PFFile 返回 nil 可选值 - Swift 1.2的主要内容,如果未能解决你的问题,请参考以下文章
Obj-C 框架返回 nil,并让我的 Swift 代码崩溃,说“致命错误:在展开可选值时意外发现 nil”