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