Из-за того, что пользовательская информация NSNotificationCenter.defaultCenter().postNotificationName принимает только словари с данными, соответствующими протоколу AnyObject, есть ли у кого-нибудь предложения, как публиковать структуры как часть NSNotification?
Моя первоначальная мысль заключалась в том, чтобы обернуть структуру в класс, но тогда какой смысл в использовании структуры в первую очередь.
Я что-то упустил или это просто результат объединения Swift с API, созданным для Objective C?
Вот демонстрация того, что я описываю: -
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