ExtensionProperty 1.0.2

ExtensionProperty 1.0.2

Maintained by Hideki Matsuoka, Hideki Matsuoka.

  • By
  • Hideki Matsuoka

Extension Property

platforms Swift4.1 License
Carthage SwiftPM Version

The utility interface for Associated Object. If you use this, you can attach any variables in extension.


protocol Animal {}

enum AnimalPropertyKeys: String, ExtensionPropertyKey {
    case name

final class Dog: Animal {}

extension Dog: ExtensionProperty {}

// Declare setter and getter to property
extension Animal where Self: ExtensionProperty {
    var name: String {
        get {
            return getProperty(key: AnimalPropertyKeys.name, defaultValue: "")

        set {
            setProperty(key: AnimalPropertyKeys.name, newValue: newValue)

let dog = Dog()

// You can assign string to dog.name
dog.name = "Autumn"

Please check out and try the unit test.



If you’re using Carthage, simply add ExtensionProperty to your Cartfile:

github "cats-oss/ExtensionProperty"


ExtensionProperty is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'ExtensionProperty'

Swift Package Manager

If you’re using Swift Package Manager, simply add ExtensionProperty to your Package.swift:

dependencies: [
    .package(url: "https://github.com/cats-oss/ExtensionProperty", from: "1.0.2")


  • Xcode 9.3
  • Swift 4.1 or greater


ExtensionProperty is available under the MIT license. See the LICENSE file for more info.