2016-03-28 15 views
1

私はこのエラーで私のコードに多くの問題があります。うまくいけば、誰かがここで私を助けることができるなら、私は残りの問題を理解することができます。私はxcode 7.3にアップデートし、迅速な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] { 

コンパイラは、キー添字が有効と

2番目の例では、似ていることが可能であることを知っている:objectは辞書で、コンパイラはその値を知っている必要があります私の質問で2番目のコードブロックのために、それは何でしょうので、キーdriverにも

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

オーケー感謝辞書で、これは、コード行のエラーを修正するようですか? – kareem

+0

私はobjectForKeyを使用しているので、 – vadian

+0

の答えを更新しました。キー自体は単なる文字列なので、そのようにキャストする必要がありますか?それはまったく正しい理解ですか? – kareem

関連する問題