Ios 获取自定义NS对象属性数组的简单方法?
我有一个NSObject,其某些属性如下所示:Ios 获取自定义NS对象属性数组的简单方法?,ios,swift,nsarray,nsobject,Ios,Swift,Nsarray,Nsobject,我有一个NSObject,其某些属性如下所示: public class Contact: NSObject { var first: String = "" var last: String = "" var title: String = "" //and so forth } 是否有一种简单的方法可以将对象的单个实例(即一个联系人)的对象属性值获取到一个数组中,例如: {"Bob","Smith","Vice President"} 我似乎找不到一个简单的方法来做这件事。提前感谢您的
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
//and so forth
}
是否有一种简单的方法可以将对象的单个实例(即一个联系人)的对象属性值获取到一个数组中,例如:
{"Bob","Smith","Vice President"}
我似乎找不到一个简单的方法来做这件事。提前感谢您的建议。穴居人之道:
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
var values: [String] {
return [first, last, title]
}
}
一种更有用的方法,它允许您序列化到NSKeyedArchiver、JSONeCoder或其他任何东西:
public class Contact: NSObject {
var first: String = ""
var last: String = ""
var title: String = ""
var values: NSDictionary {
return [
"first": first,
"last": last,
"title": title
]
}
}
无论哪种方法,最简单的方法是手动清除您感兴趣的状态属性。查找对象属性值的最佳方法是使用apple提供的镜像API。您可以按以下方式获取属性值: 示例代码
现在,该类位于另一个文件中,但我可以使用手动方法从该对象创建数组。希望我能给穴居人额外的+1作为参考
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 ?? ""}
}