Convert your own struct/enum to AnyObject easily.
We can cast everything as AnyObject at Swift3.0 🎉
So, we would not need this library no longer
In swift, struct or enum cannot convert to AnyObject
NSNotificationCenter.defaultCenter().postNotificationName("foo", object:YourOwnStruct()) // FailOf course, you may wrap value using Box<T>.
classBox<T>{letvalue:Tinit(value:T){self.value = value
}}NSNotificationCenter.defaultCenter().postNotificationName("foo", object:Box(value:YourOwnStruct())) // OKBut Box<T> unwrap is too lazy.
letvalue=(notification.object as?Box<YourOwnStruct>)?.valueYou can cast your struct/enum directory if implement AnyObjectConvertible at that type.
extensionYourOwnStruct:AnyObjectConvertible{}NSNotificationCenter.defaultCenter().postNotificationName("foo", object:YourOwnStruct()) // OK
letvalue= notification.object as?YourOwnStructYou can use CocoaPods to install AnyObjectConvertible by adding it to your Podfile:
platform:ios,'8.0'use_frameworks!pod'AnyObjectConvertible'To get the full benefits import AnyObjectConvertible wherever you import UIKit
import UIKit
import AnyObjectConvertibleCreate a Cartfile that lists the framework and run carthage bootstrap. Follow the instructions to add $(SRCROOT)/Carthage/Build/iOS/YourLibrary.framework to an iOS project.
github "tarunon/AnyObjectConvertible"
- Download and drop
AnyObjectConvertible.swiftin your project. - Congratulations!
MIT