轻松将您的 struct/enum 转换为 AnyObject。
在 Swift 中,struct 或 enum 无法转换为 AnyObject
NSNotificationCenter.defaultCenter().postNotificationName("foo", object: YourOwnStruct()) // Fail
当然,您可以使用 Box<T> 包装值。
class Box<T> {
let value: T
init(value: T) {
self.value = value
}
}
NSNotificationCenter.defaultCenter().postNotificationName("foo", object: Box(value: YourOwnStruct())) // OK
但 Box<T> 的解包过于懒惰。
let value = (notification.object as? Box<YourOwnStruct>)?.value
如果在该类型中实现 AnyObjectConvertible,则可以强制转换您的 struct/enum。
extension YourOwnStruct: AnyObjectConvertible {}
NSNotificationCenter.defaultCenter().postNotificationName("foo", object: YourOwnStruct()) // OK
let value = notification.object as? YourOwnStruct
使用 Carthage。
github "tarunon/AnyObjectConvertible"
MIT