由于 NSNotificationCenter.defaultCenter().postNotificationName userinfo 只接受符合 AnyObject 协议的数据的字典,有没有人有任何建议如何将结构作为 NSNotification 的一部分发布?
我最初的想法是将结构包装在一个类中 - 但是首先使用结构有什么意义。
我是否遗漏了什么,或者这只是将 Swift 与为 Objective C 构建的 API 混为一谈的结果?
这是我所描述的演示:-
class wrapper: NSObject {
var aStructToWrap: aStruct
init(theStruct: aStruct) {
aStructToWrap = theStruct
super.init()
}
}
struct aStruct {
var aValue: String
}
let aRealStruct = aStruct(aValue: "egg")
NSNotificationCenter.defaultCenter().postNotificationName("aKey", object: nil, userInfo: ["anotherKey": aRealStruct]) // ERR: Extra argument 'userinfo' in call
let wrappedStruct = wrapper(theStruct: aRealStruct)
NSNotificationCenter.defaultCenter().postNotificationName("aKey", object: nil, userInfo: ["anotherKey": wrappedStruct]) // no error