我在用户 View Controller 类中有许多用户属性,即
//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 相匹配。有没有一种方法可以通过将它与 fieldName 字符串匹配来引用循环中的 ivars,这样我就可以使用获取的核心数据值设置 ivars 的值,即从字面意义上说,如下所示......
if self.property.name.text == fieldName {
self.property.value == fieldText
}
即以某种方式解析类中的各种属性名称……或者这是糟糕的设计? ....如果有任何关于以更好的方式实现相同结果的建议
最佳答案
不是 Swift-ish,因为它绕过了编译时类型检查。最好的选择是将它们全部保存在字典中,并使用协议(protocol)在字典中定义允许的数据类型,但即使这样也很差
关于ios - swift 。通过字符串名称引用实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318093/