2016-07-12 2 views
1

でインスタンス変数を参照してください。ループ内のそのデータスイフト。私はcoredataからユーザデータを取得して、ユーザのテキストフィールドを設定し、そのクラス内の方法では</p> <pre><code>//user vars var email: String? var givenName: String? var familyName:String? var phone: String? var dob: NSDate? </code></pre> <p>ユーザーのViewControllerクラスIEのユーザープロパティの数を持っている文字列名

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 
} 

つまり、クラスを使用していろいろなプロパティ名を解決しています...またはこの悪いデザインですか?コンパイル時の型チェックをバイパスしているので、Swift-ishではないため、より良い方法で同じ結果を達成するための提案がある場合は、

答えて

0

です。最良の選択肢は、それらをすべて辞書に保持し、プロトコルを使用して辞書に許可されたデータ型を定義することですが、それでもやや劣っています。

関連する問題