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

时间:2018-06-05 14:21:43

标签: ios swift nsarray nsobject

我有一个NSObject,其中包含一些属性:

public class Contact: NSObject {

var first: String = ""
var last: String = ""
var title: String = ""
//and so forth
}

是否有一种简单的方法可以将对象的单个实例(即一个Contact)的对象属性的值转换为数组,例如:

{"Bob","Smith","Vice President"}

我似乎无法找到一种直接的方法来做到这一点。提前感谢任何建议。

2 个答案:

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