AnyObjectConvertible
Convert your own struct/enum to AnyObject easily.
Sumally
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()) // Fail
Of course, you may wrap value using Box<T>.
class Box<T> {
let value: T
init(value: T) {
self.value = value
}
}
NSNotificationCenter.defaultCenter().postNotificationName("foo", object: Box(value: YourOwnStruct())) // OK
But Box<T> unwrap is too lazy.
let value = (notification.object as? Box<YourOwnStruct>)?.value
You can cast your struct/enum directory if implement AnyObjectConvertible at that type.
extension YourOwnStruct: AnyObjectConvertible {}
NSNotificationCenter.defaultCenter().postNotificationName("foo", object: YourOwnStruct()) // OK
let value = notification.object as? YourOwnStruct
Installation
CocoaPods
You 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 AnyObjectConvertible
Carthage
Create 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"
Manually
- Download and drop
AnyObjectConvertible.swiftin your project. - Congratulations!
License
MIT