Ios 获取自定义NS对象属性数组的简单方法?

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"} 我似乎找不到一个简单的方法来做这件事。提前感谢您的

我有一个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 = ""

  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 ?? ""}
}