2016-03-28 68 views
1

我的代碼中存在很多問題,包含此錯誤。希望如果有人能在這裏幫助我,我就能想出其餘的問題。我已更新到xcode 7.3並運行swift 2.2。模糊使用下標swift 2.2

我讀過編譯器已經「更嚴格」了,我必須告訴它什麼是「中介」對象。這引起我一些困惑,並希望得到進一步的解釋。

func getMessage(dictionary:NSDictionary)->String{ 

    var message = String() 
    if let dict = dictionary["aps"] { 
     if let message:String = dict["alert"] as? String { 
      return message 
     } 
     else{ 
      message = "" 
     } 

    } 
    return message 
} 

enter image description here

又如:

for object in objects { 
      let getDriver = object.objectForKey("driver") 

      if let picture = getDriver!["thumbnailImage"] as? PFFile { 
       self.profilePictures.append(picture) 
      } 
      self.requestsArray.append(object.objectId as String!) 
     } 

enter image description here

回答

6

類型的字典值總是AnyObject。鑄造類型更具體的,例如一些

if let dict = dictionary["aps"] as? [String:AnyObject] { 

然後編譯器知道關鍵的下標是有效的,並可能

第二個例子是相似的:object是一本字典和編譯器需要知道該值關鍵driver也是一本字典

if let getDriver = object.objectForKey("driver") as? [String:AnyObject] { 
    if let picture = getDriver["thumbnailImage"] as? PFFile { 
    ... 
+0

好感謝,這似乎修復錯誤該行的代碼,所以我的問題的第二個代碼塊會是怎樣? – kareem

+0

我更新了答案 – vadian

+0

沒問題,因爲我使用的是objectForKey,鍵本身只是一個字符串,所以我需要將它轉換爲這樣?這是不是正確的理解? – kareem