2016-12-01 6 views
2

私のコードをObjective CからSwiftに変換中です。私は、迅速な方法から客観的なCのメソッドを呼び出すコードを持っています。 obj CメソッドはNSDictionaryを返します。どうやらSwiftはこのオブジェクトをタイプ[AnyHashable : Any]と見なします。このタイプの情報を読むにはどうすればよいですか?たとえばNSDictionaryの場合、私はNSString *s = [dict objectForKey:"key"]と言うでしょう。 Swiftで[AnyHashable : Any]の値にアクセスするにはどうすればよいですか?[AnyHashable:Any]の情報にNSDictionaryとしてアクセスする

ありがとうございます。

+0

私はNSDictionaryののスウィフト同等のだろうと思うだろう'[AnyHashable:Any]'ではなく[AnyHashable:AnyObject] ' –

答えて

0

Objective-Cのように下付き文字を使用できます。

スウィフト:

let s = dict["key"] 

のObjective-C:

NSString *s = dict["key"] //is equivalent to [dict objectForKey:"key"] 
+0

実際に' id s = dict ["key"]はもっと近いでしょう。 'id 'はObjective-Cの匿名オブジェクトポインタです。 –

+0

私はそれを試みました。 Type '() - > [AnyHashable:Any]!'というコンパイラエラーが発生します。添字はありません – mscarafo

+0

私はそれを解決しました。私がNSDictionaryを渡すために呼び出していた目的のCメソッドが、dict = object.getDictになっています。私はlet dict = object.getDict()と言う必要があった。括弧を入れてください。コンパイラのエラーはあまり役に立たなかった。 – mscarafo

2

試して、あなたの結果をアンラップするために、次のコードを使用する:

if let dict = dict as NSDictionary? as! [String:Any]? { 
    print(dict[key]) 
} 
関連する問題