2015-05-19 37 views
1

時Swift中的Optionals問題嗨,我對Swift非常不熟悉,所以我確信這個問題是由於我天真的語法。一般來說,我試圖從Parse中檢索數據並將結果讀入NSArray。但是,我收到以下錯誤:使用dispatch_async()

fatal error: unexpectedly found nil while unwrapping an Optional value

我已將其縮小到本節中該函數失敗的代碼中。我在self.userData = res行後發現錯誤。我確信我正在闡述一個沒有說明的價值,但不知道如何解決它。如果我執行類似var res = query!.findObjects()?的操作來使findObjects成爲可選,那麼會出現編譯器錯誤。只是有點卡住,任何幫助。

func getUserInfo() { 
    let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
    dispatch_async(dispatch_get_global_queue(priority, 0)) { 
     let user = PFUser.currentUser() 
     var query = PFUser.query() 
     query!.whereKey("username", equalTo: self.username) 
     var res = query!.findObjects()! 
     dispatch_async(dispatch_get_main_queue()) { 
      self.userData = res 
      self.tableView.reloadData() 
     } 
    } 
} 
+3

我要開始從斯威夫特的程序員的鍵盤去掉'1'鍵,以便他們可能會停止濫用''操作...! – nhgrif

回答

3

它更可能是這些線路之一:

query!.whereKey("username", equalTo: self.username) 
    var res = query!.findObjects()! 

這些都是解開Optional值線。

試試這個:

if let unwrappedQuery = query { 
    unwrappedQuery.whereKey("username", equalTo: self.username) 
    if let result = query.findObjects() { 
     dispatch_async(dispatch_get_main_queue()) { 
      self.userData = result 
      self.tableView.reloadData() 
     } 
    } else { 
     println("query.findObjects returned nil") 
    } 
} else { 
    println("query was nil") 
}