gpt4 book ai didi

iOS 如何在 Swift 中获取对象的属性类型?

转载 作者:可可西里 更新时间:2023-10-31 23:45:35 26 4
gpt4 key购买 nike

我试图在 Swift 中获取对象的属性信息。我已经能够获取属性的名称和某些属性,但我不确定如何提取属性的类型。

我一直在尝试遵循有关此 objective-c related post 的一些建议

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(或其他一些强制执行默认构造函数的类。)

关于iOS 如何在 Swift 中获取对象的属性类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com