2015-07-03 38 views
11

我很新的編碼斯威夫特,所以請原諒,如果這個錯誤是一個簡單的答案!錯誤:'表達式的類型不明確,沒有更多的上下文'

我不斷收到一條錯誤消息,指出「表達式類型不明確,沒有更多上下文」。

var findTimelineData: PFQuery = PFQuery(className: "Sweets") 
    findTimelineData.findObjectsInBackgroundWithBlock { 
     (objects:[AnyObject]?, error:NSError?) -> Void in 

     if error == nil { 
      for object:PFObject in objects! { // ----This is the error line--- 
       self.timelineData.addObject(object) 
      } 
     } 
    } 

我明白是什麼問題,我只是不確定如何去修復它。我已經看到了有關此問題的其他問題,但沒有關於通過AnyObject數組進行迭代的問題。

謝謝!

回答

21

可以幫助編譯器知道什麼objects是這樣的:

for object in objects as! [PFObject] { 
    self.timelineData.addObject(object) 
} 
+0

明白了!謝謝! –

+0

我的示例使用強制解包,不要忘記,如果數組中的任何對象不是PFObject,則會崩潰。如果你認爲這可能是你的情況,或者有任何疑問,最好使用可選的綁定,就像在Tom Howard的答案中一樣。 – Moritz

2
if let pfObjects = objects as? [PFObject] 
{ 
    for pfObject in pfObjects 
    { 
     self.timelineData.addObject(pfObject) 
    } 
} 

...斯威夫特代碼驚歎號給我heeby jeebies。

0

如果你正在編寫一些代碼喜歡:

for (i, view) in views { 
} 

您需要添加enumerated

for (i, view) in views.enumerated() { 
} 

而現在它應該工作。

相關問題