代码之家  ›  专栏  ›  技术社区  ›  user6631314

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

  •  1
  • user6631314  · 技术社区  · 6 年前

    我有一个nsobject,它具有如下属性:

    public class Contact: NSObject {
    
    var first: String = ""
    var last: String = ""
    var title: String = ""
    //and so forth
    }
    

    是否有一种简单的方法将对象的单个实例(即一个联系人)的对象属性值获取到数组中,例如:

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

    我似乎找不到一个直截了当的方法来做这件事。提前谢谢你的建议。

    2 回复  |  直到 6 年前
        1
  •  1
  •   ouni    6 年前

    穴居人之道:

    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
        ]
      }
    }
    

    不管是哪种方式,最简单的方法是手动删除您感兴趣的状态属性。

        2
  •  0
  •   avinash pandey    6 年前

    找到对象属性值的最佳方法是使用apple提供的镜像api。您可以获取属性值

    示例代码

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