2016-07-12 36 views
1

我有一個用戶的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

不是Swift-ish,因爲它繞過編譯時類型檢查。最好的選擇是將它們全部保存在字典中,並使用協議在字典中定義允許的數據類型,但即使那樣也很差