镜像 0.2.3

Mirror 0.2.3

测试测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2015 年 7 月
SPM支持 SPM

Kostiantyn Koval 维护。



Mirror 0.2.3

Mirror

Mirror - Swift 对象反射 API。它是 100% Swift,没有 Objective-C 运行时。
可以反射 Swift 对象,并且并不需要很复杂。

特性

  • [x] 100% 纯 Swift 实现
  • [x] 易于使用
  • [x] 强大
  • [ ] 更强大(即将推出)

用法

如果您想尝试它,有一个演示代码库可供使用,只需运行

pod try Mirror

为实例创建一个镜像

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

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

检查它

//Get information about the type of an instance

mirror.name
//"MirrorTest.Person"

mirror.shortName
//Person

mirror.memorySize
// 32

mirror.isClass
//false

mirror.isStruct
//true

类型属性检查

获取关于类型内容的详细信息,包括其属性

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 是一个 CollectionType

所有 CollectionType 方法都可以与 mirror 一起使用
迭代、计数、映射、过滤和其他操作

// 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

安装

作者

Kostiantyn Koval, [email protected]

许可

Mirror 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。