【问题标题】:Swift. Refer to instance variables by string name迅速。通过字符串名称引用实例变量
【发布时间】:2016-11-14 01:24:42
【问题描述】:

我在用户视图控制器类中有许多用户属性,即

//user vars
var email: String?
var givenName: String?
var familyName:String?
var phone: String?
var dob: NSDate?

在该类中的一个方法中,我从 coredata 中检索用户数据,并在循环中使用该数据设置用户文本字段

for i in 0 ..< userTextFields.count {
   let field = userTextFields[i]
   let fieldName = userTextFieldKeyNames[i]
   let fieldText = currentUser.valueForKey(fieldName) as? String
   field.text = fieldText
 }

循环中的 fieldName 变量与上述类的 ivars 匹配。有没有一种方法可以通过将循环中的 ivars 与 fieldName 字符串匹配来引用它,这样我就可以使用获取的 coredata 值来设置 ivars 的值,即从字面意义上说类似于以下内容...

if self.property.name.text == fieldName {
  self.property.value == fieldText 
}

即以某种方式解决类的各种属性名称......或者这是一个糟糕的设计? ....如果是这样,任何关于以更好的方式实现相同结果的建议

【问题讨论】:

    标签: ios swift reflection properties


    【解决方案1】:

    不是 Swift-ish,因为它绕过了编译时类型检查。最好的选择是将它们全部保存在字典中,并使用协议来定义字典中允许的数据类型,但即使这样也相当糟糕

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多