Skip to content

Instantly share code, notes, and snippets.

@segiddins
Last active August 29, 2015 14:19
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save segiddins/3bb3f4ea3689a9d9841f to your computer and use it in GitHub Desktop.
#!/usr/bin/env cato 1.2
import Foundation
class OptCls: NSObject {
dynamic var s: String?
dynamic var nos: String = ""
dynamic var nss: NSString?
dynamic var ius: String!
dynamic var i: Int = 0
dynamic var o = NSObject()
dynamic var oo: OptCls?
}
extension Optional {
var getT: Any.Type {
println("\(T.self)")
return T.self
}
}
func getOptionalPropertyNames(object: AnyObject) -> NSDictionary {
let reflection = reflect(object)
var properties = [String:String]()
// Skip the first property (super):
// super is an implicit property on Swift objects
for i in 1..<reflection.count {
println("reflection: \(reflection[i])")
// let prop = class_getProperty(object.dynamicType, reflection[i].0)
// println(String.fromCString(property_getAttributes(prop)))
let mirror = reflection[i].1
let valueType = mirror.valueType
println("value type: \(valueType)")
if mirror.disposition == .Optional {
properties[reflection[i].0] = toString(valueType)
}
println()
}
return properties
}
let props = getOptionalPropertyNames(OptCls())
println(props)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment