我在用户viewcontroller类中有很多用户属性,即
//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,这样我就可以使用获取的coredata值设置ivars的值,即字面意义上的内容如下所示......
if self.property.name.text == fieldName {
self.property.value == fieldText
}
即以某种方式用类来解析各种属性名称......或者这是一个糟糕的设计? ....如果有任何关于以更好的方式实现相同结果的建议
答案 0 :(得分:0)
不是Swift-ish,因为它绕过了编译时类型检查。最好的选择是将它们全部保存在字典中,并使用协议在字典中定义允许的数据类型,但即使这样也很差