我有一个NSObject,其中包含一些属性:
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
//and so forth
}
是否有一种简单的方法可以将对象的单个实例(即一个Contact)的对象属性的值转换为数组,例如:
{"Bob","Smith","Vice President"}
我似乎无法找到一种直接的方法来做到这一点。提前感谢任何建议。
答案 0 :(得分:1)
穴居人的方式:
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
var values: [String] {
return [first, last, title]
}
}
一种更有用的方法,它允许您序列化为NSKeyedArchiver,JSONEncoder或其他:
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
var values: NSDictionary {
return [
"first": first,
"last": last,
"title": title
]
}
}
无论哪种方式,最简单的方法是手动清除您感兴趣的状态属性。
答案 1 :(得分:0)
查找Object属性值的最佳方法是使用apple提供的Mirror apis。您可以将属性值设为
示例代码
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
//and so forth
var values: [String] {
return Mirror(reflecting: self).children.map {$0.value as? String ?? ""}
}