Как получить доступ и присвоить значение переменной, используя строку, соответствующую имени переменной - PullRequest
0 голосов
/ 25 июня 2019

Я хочу нацелить переменную (свойство) в классе, используя строку, равную имени переменной.Есть ли способ сделать это?

class Person {

  let name: String
  let email: String
  let address: String

  let propertiesMap: [String : String] = [
    "person_name": "name",
    "person_email_address": "email"
  ]

  init(_ data: NSDictionary) {

     for element in data {
       # string key address of Person property 
         propertiesMap[ element.key ]

       # value to be assigned to the property 
         element.value

     }
  }  
}

Я ожидаю, чтобы перебрать данные NSDictionary и, если ключ словаря соответствует свойству класса, затем назначить значение ключа в данных NSDictionaryв собственность класса

1 Ответ

0 голосов
/ 25 июня 2019

в одну сторону может быть

class Person: NSObject{
    @objc var name: String?
    @objc var email: String?


    class func from(dict: [String:String]) -> Person{
        let v = Person()
        for element in dict{
            v.setValue(element.value, forKey: element.key)
        }
        return v
    }
}


func test(){
    let p = Person.from(dict: ["name":"John","email":"john@doe.com"])
    print("name \(p.name ?? ""), email \(p.email ?? "")")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...