【问题标题】:Dynamically populate object properties with dictionary values使用字典值动态填充对象属性
【发布时间】:2011-09-12 01:02:24
【问题描述】:

在 Objective-C 中,我有一本字典:

firstName -> John
lastName -> Smith
age -> 34

和一个对象Person,它具有相应的实例变量和属性(适当地处理内存管理)。我想创建一个方便的初始化程序,它将字典作为参数并从字典键/值填充所有对象字段(通过它们的属性用于内存管理目的),而不是手动执行以下操作:

obj.firstName = [dict objectForKey:@"firstName"];
obj.lastName = [dict objectForKey:@"lastName"];
obj.age = [dict objectForKey:@"age"];
....

我该怎么做?

【问题讨论】:

    标签: objective-c dictionary properties initialization populate


    【解决方案1】:

    你可以使用Key-Value Coding:

    [obj setValuesForKeysWithDictionary:dict];
    

    另见the documentation for -setValuesForKeysWithDictionary:

    【讨论】:

    • 是否有类似的方法可以反过来(将对象转换为字典)?
    • @ebi -dictionaryWithValuesForKeys:,其文档在同一页上。
    • 如果我没记错的话,你需要声明密钥——我正在寻找一种更简单的方法..
    • @ebi 运行时不知道对象上的哪些选择器对应于键。如果存在获取对象所有属性的方法,则它必须调用具有正确签名的每个方法。 - (MyObject *)newObject 是创建新对象的方法,还是返回 newObject 属性值的方法?
    • @ebi 我假设性地问,因为它与任何属性具有相同的签名,因此假设的“所有属性的字典”需要调用该方法(以及任何类似的方法),尽管有不知道它是否真的是一个属性。
    猜你喜欢
    • 2015-11-12
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多