将字典对象从 Obj-C 传递到 Swift
Passing a Dictionary object from Obj-C to Swift
在我的 obj-C 代码库中,我调用将 NSDictionary 对象传递给 Swift class:
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 {
}
收到字典后,您可以检索键的值,并在需要时将该值向下转换为其声明的类型
在我的 obj-C 代码库中,我调用将 NSDictionary 对象传递给 Swift class:
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 {
}
收到字典后,您可以检索键的值,并在需要时将该值向下转换为其声明的类型