我正在尝试获取Swift中某个对象的属性信息。我已经能够获取属性的名称和某些属性,但是我不确定如何提取属性的类型。
我一直在尝试遵循这个与Objective-C相关的帖子的一些建议
class func classOfProperty(parentType: AnyClass, propertyName: String) -> AnyClass?
{
var type: AnyClass?
var property: objc_property_t = class_getProperty(parentType, propertyName);
var attributes = NSString(UTF8String: property_getAttributes(property)).componentsSeparatedByString(",") as [String]
if(attributes.count > 0) {
?????
}
return type
}
在Swift中有可能吗?如果是这样,怎么办?
在Swift 1.2中,可能会发生以下情况:
import Foundation
func getPropertyType(parentType: NSObject.Type, propertyName: String) -> Any.Type? {
var instance = parentType()
var mirror = reflect(instance)
for i in 0..<mirror.count {
var (key, valueInfo) = mirror[i]
if key == propertyName {
return valueInfo.valueType
}
}
return nil
}
enum EyeColor: Int { case Brown = 1, Blue = 2, Black = 3, Green = 4 }
class Person: NSObject {
var name = "Fred"
var eyeColor = EyeColor.Black
var age = 38
var jumpHeight: Float?
}
println(getPropertyType(Person.self, "name"))
println(getPropertyType(Person.self, "eyeColor"))
println(getPropertyType(Person.self, "age"))
println(getPropertyType(Person.self, "jumpHeight"))
不幸的是,它们必须是NSObjects(或其他具有默认构造函数的类。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句