0
func getAllPropertyName(_ aClass : AnyClass) -> [String] {
var count = UInt32()
let properties = class_copyPropertyList(aClass, &count)
var propertyNames = [String]()
let intCount = Int(count)
for i in 0 ..< intCount {
let property : objc_property_t = properties![i]!
guard let propertyName = NSString(utf8String: property_getName(property)) as? String else {
debugPrint("Couldn't unwrap property name for \(property)")
break
}
propertyNames.append(propertyName)
}
free(properties)
return propertyNames
このコードはSwift 3.2まで動作します。しかし私はSwift 4を使用していて、空のArray [String]を与えています。Swift 4でクラスプロパティのリストを取得するにはどうすればよいですか?
はhttps://stackoverflow.com/q/44762460/1187415とhttps://stackoverflow.com/q/44390378/1187415を参照してください:あなたは明示的に指定する必要がありSwift 4で '@ objc'を使用してObjective-Cランタイムにメンバーを公開してください。 –
[swiftでクラスのプロパティのリスト]の可能な複製(https://stackoverflow.com/questions/24844681/list-of-classs-properties-迅速に) – Ibo