我有一个RequestError数组,我想将其传递给通知userInfo对象。
let errors: [RequestError]
let errorDictionary = ["errors": errors]
NSNotificationCenter.defaultCenter().notificationCenter.postNotificationName(UserSaveFailKey, object: self, userInfo: errorDictionary)
为什么我
无法转换类型' [String:[RequestError]]'的值预期 参数类型' [NSObject:AnyObject]?'
答案 0 :(得分:1)
如果RequestError
是enum
或struct
,那么它不是引用类型,并且它们的数组将不符合AnyObject
,因为它可以& #39; t转换为NSArray
。
您可以通过创建包装类来解决此问题:
class RequestErrorsWrapper {
let errors: [RequestError]
init(errors: [RequestError]) {
self.errors = errors
}
}
let errorDictionary = ["errors": RequestErrorsWrapper(errors: errors)]
NSNotificationCenter.defaultCenter().postNotificationName(UserSaveFailKey, object: self, userInfo: errorDictionary)
然后在接收端,你可以像这样解压缩错误:
if let wrapper = notification.userInfo?["errors"] as? RequestErrorsWrapper {
let errors = wrapper.errors
// use errors
}