cats-oss/ExtensionProperty
🗜The utility interface for Associated Object
Extension Property
<p align="center"> <img src="https://img.shields.io/badge/Platforms-iOS%20%7C%20tvOS%20%7C%20macOS-blue.svg?style=flat" alt="platforms" /> <a href="https://developer.apple.com/swift"> <img src="http://img.shields.io/badge/Language-Swift4.1-orange.svg?style=flat" alt="Swift4.1" /> </a> <a href="./LICENSE"> <img src="http://img.shields.io/badge/License-MIT-lightgray.svg?style=flat" alt="License" /> </a> <br /> <a href="https://github.com/Carthage/Carthage"> <img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" alt="Carthage" /> </a> <a href="https://github.com/apple/swift-package-manager"> <img src="https://img.shields.io/badge/SwiftPM-compatible-4BC51D.svg?style=flat" alt="SwiftPM" /> </a> <a href="http://cocoapods.org/pods/ExtensionProperty"> <img src="https://img.shields.io/cocoapods/v/ExtensionProperty.svg?style=flat" alt="Version" /> </a> </p>
The utility interface for Associated Object. If you use this, you can attach any variables in extension.
Usage
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.
Installation
Carthage
If you’re using Carthage, simply add ExtensionProperty to your Cartfile:
github "cats-oss/ExtensionProperty"CocoaPods
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")
]Requirements
- Xcode 9.3
- Swift 4.1 or greater
LICENSE
ExtensionProperty is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: cats-oss/ExtensionProperty
Stars: 8
Forks: 3
Open issues: 0
Default branch: master
Primary language: swift
License: MIT
Topics: carthage, cocoapods, extension, protocol-oriented, swift, swift-package-manager
README: README.md