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的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:在展开可选值时意外发现 nil。迅速

Obj-C 框架返回 nil,并让我的 Swift 代码崩溃,说“致命错误:在展开可选值时意外发现 nil”

Obj-C 框架返回 nil,并让我的 Swift 代码崩溃,说“致命错误:在展开可选值时意外发现 nil”

《函数式swift》—swift为什么是用可选值?

Swift:在展开可选值时发现 nil

Swift:错误:在隐式展开可选值时意外发现 nil