2015-08-19 112 views
0
import UIKit 
import Parse 

class HomePageViewController: UIViewController, UITableViewDelegate { 

@IBOutlet weak var homPageTableView: UITableView! 
var imageFiles = [PFFile]() 
var imageText = [String]() 



override func viewDidLoad() { 
    super.viewDidLoad() 

    // DO any additional setup after loading the view 
    var query = PFQuery(className: "Posts") 
    query.orderByAscending("createdAt") 
    query.findObjectsInBackgroundWithBlock { 
     (posts : [AnyObject]?, error : NSError?) -> Void in 

     if error == nil { 
      //success fetxhing objects 
      println(posts?.count) 
      for post in posts! { 

       self.imageFiles.append(post["imageFile"] as! PFFile) ---------error here 
       self.imageText.append(post["imageText"] as! String) 
      } 

      println(self.imageFiles.count) 


     }else{    println(error) 
    } 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}意外地發現零而展開的可選值(可綁定)

作爲標題,它一直說「意外發現零而展開的可選值」在我劃清界線。

關於這個問題有很多問題,很難爲我讀代碼,即使我承擔了,我的行爲也沒有正確。

我應該在哪裏使用可選綁定?

你可以解釋它與真正簡單的例子什麼是可選綁定?

謝謝

+0

上傳!實際上,這是解析數據庫問題。刪除所有對象後,它可以正常工作謝謝你們。 – veryNew

回答

0

post字典不包含imageFile關鍵。當您使用post["imageFile"]訪問字典時,結果是值(如果密鑰存在)和nil(如果密鑰不存在)。你可以區分這些案件使用

if let imageFile = post["imageFile"], 
    let imageText = post["imageText"] { 
    self.imageFiles.append(imageFile as! PFFile) 
    self.imageText.append(imageText as! String) 
} else { 
    print("imageFile and/or imageText missing from \(post)") 
} 
0

你需要通過他們的循環,因爲posts: [AnyObject]?是可選的前解開自己的帖子。

if error == nil { 
    if let postData = posts{ 
     //success fetxhing objects 
     println(postData?.count) 
     for post in postData! { 
      self.imageFiles.append(post["imageFile"] as! PFFile) 
      self.imageText.append(post["imageText"] as! String) 
     } 
     println(self.imageFiles.count) 
    } 
}else{    
    println(error) 
} 
+0

這是導致問題的'post [「imageFile」]'強制解包。如果它的「帖子」是零,錯誤就會早早發生。 – Aderstedt

相關問題