CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

Mirror 0.2.3

Mirror 0.2.3

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Jul 2015
SPMSupports SPM

Maintained by Kostiantyn Koval.



Mirror 0.2.3

Mirror

Mirror - Swift objects Reflection API. It’s 100% Swift, no Objc runtime.
It’s possible to do reflection of Swift object. And it doesn’t need to be hard.

Features

  • [x] 100% Pure Swift implementation
  • [x] Easy to use
  • [x] Powerful
  • [ ] Even more Powerful (Coming soon)

Usage

If you want to try it, there is a demo Playground available, just run

pod try Mirror

Create a mirror for an instance

struct Person {
  let name: String
  var age: Int
}

var person = Person(name: "Jon", age: 27)
let mirror = Mirror(person)

Inspect it

//Get information about the type of an instance

mirror.name
//"MirrorTest.Person"

mirror.shortName
//Person

mirror.memorySize
// 32

mirror.isClass
//false

mirror.isStruct
//true

Type Properties Inspection

Get information about content of the type, its properties

mirror.names
//["name", "age"]

mirror.values
//["Jon", 27]

mirror.types
//[Swift.String, Swift.Int]

mirror.typesShortName
//["String", "Int"]

mirror["name"] //"Jon"
mirror["age"]  //27

mirror.toDictionary
//["age": 27, "name": "Jon"]

Mirror is a CollectionType

All the CollectionType methods are available for use with mirror
Iterating, count, map, filter and other

// Iterate over its children MirrorItems
for item in mirror {
  println(item)
}
//name: Swift.String = Jon
//age: Swift.Int = 27

let children = mirror.children //Array of MirrorItem
let firstKid = children[0]
//{name: "name", type: Swift.String, value: "Jon" }

var mirP = mirror[1]
mirP.name   // "age"
mirP.value  // 27
mirP.type   // Swift.Int

Installation

Author

Kostiantyn Koval, [email protected]

License

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