在我的obj-C代码库中,我正在调用将NSDictionary对象传递给Swift类:
AppDelegate.m
-(void)application:(UIApplication *) application didReceiveRemoteNotification: (NSDictionary *)dictionaryInfo {
...
[[SwiftClass sharedInfo] setInfo:dictionaryInfo];
...
}
SwiftClass.swift
class SwiftClass: NSObject {
static let sharedInfo = MYQNotificationInfo()
func setInfo(notification:Dictionary<String,String>) -> Void {
// runtime error happens before this line
}
}
该应用程序已编译,但是当我收到推送通知时,它崩溃了。使用Xcode调试器,我在AppDelegate中的setInfo方法上设置了一个断点,可以看到收到了推送通知。但是,一旦我进入setInfo方法,应用程序就会崩溃,从不真正将其纳入函数中。因此,我怀疑我没有在setInfo中正确设置参数。
这是我未正确传入Dictionary对象的问题吗?
最佳答案
NSDictionary只能作为[NSObject:AnyObject]传递给swift,因为NSDictionary可以包含任何类型的对象。试试这个:
func setInfo(notification:Dictionary<NSObject,AnyObject>) -> Void {
}
收到字典后,您可以检索键的值,并在需要时将该值转换为声明的类型