2016-12-01 348 views
2

我正在将我的代码从Objective C转换为Swift。我有一个代码从一个快速的方法调用客观的C方法。 obj C方法返回一个NSDictionary。显然Swift将这个对象看作是一个类型[AnyHashable : Any]。我如何阅读此类信息?例如,对于NSDictionary,我会说NSString *s = [dict objectForKey:"key"]。我在Swift中调用什么来访问[AnyHashable : Any]类型的值?作为NSDictionary访问[AnyHashable:Any]中的信息

感谢

+0

我想的NSDictionary的雨燕相当于将'[AnyHashable:AnyObject]'而不是'[AnyHashable:Any]' –

回答

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方法是let dict = object.getDict。我需要说让dict = object.getDict()。包括父亲。编译器错误在这里不是很有帮助。 – mscarafo

2

尝试使用下面的代码来解开你的结果:

if let dict = dict as NSDictionary? as! [String:Any]? { 
    print(dict[key]) 
}