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()) // 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
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
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"
- Download and drop
AnyObjectConvertible.swift
in your project. - Congratulations!
MIT