Простой способ получить массив свойств пользовательского объекта NS? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть NSObject с некоторыми свойствами, такими как:

public class Contact: NSObject {

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

Есть ли простой способ получить значения свойств объекта для одного экземпляра объекта, то есть одного контакта, в массивнапример:

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

Я не могу найти простой способ сделать это.Заранее спасибо за любые предложения.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Лучший способ найти значения свойств объекта - использовать apis Mirror, предоставляемые Apple.Вы можете получить значения свойств как

Пример кода

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 ?? ""}
}
0 голосов
/ 05 июня 2018

Путь пещерного человека:

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

В любом случае, самый простой методвручную отсканировать интересующие вас состояния.

...