2016-03-28 101 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