AnyObjectConvertible

September 16, 2016 ยท View on GitHub

Build Status Carthage compatible CocoaPods compatible

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

  1. Download and drop AnyObjectConvertible.swift in your project.
  2. Congratulations!

License

MIT