2017-04-17 19 views
1

クラスのインスタンスの属性を動的に設定/取得する方法を理解しようとしています。インスタンスの属性を動的に取得するSwift 3

Userクラス:

class User: NSObject { 
    var email: String = "" 
    var password: String = "" 
} 

私は設定/属性にこのような何かを取得しようとしている、(私は.send()が存在しないことを知っているが、私はそれが可能だ場合はそのような何かを見つけようとしている)

var user = User() 
// Set 
user.send('email') = "[email protected]" 
// Get 
print(user.send('email')) 

答えて

2

これはKey-Value Coding次のとおりです。

user.setValue("[email protected]", forKey:"email") 
print(user.value(forKey:"email")) 
+0

このCAPAを使用して任意の希望非NSObjectベースの型に対する互換性? –

+0

素晴らしい、完璧に働いた! – danielavila

+1

@PauloMattosいいえ、これにはobjcランタイムが必要です。ただし、https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.mdを参照してください。ほとんどの場合、Cocoa以外のSwiftに文字列を渡すことはできません;それは恐ろしく危険です;少なくとも私たちがリフレクションを得るまでは、それでもそれは非常に異なるでしょう)。しかし、間接的にプロパティを参照できるようになります。今日では、クロージャを使用してこれらの問題を一般的に解決します。 –

関連する問題