2017-04-17 105 views
1

我试图找出一种方法来动态地设置/获取类实例的属性。动态获取实例属性Swift 3

用户等级:

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

使用此卡帕的希望基于非NSObject类型的可移植性? –

+0

太棒了,完美无缺! – danielavila

+1

@PauloMattos不,这需要objc运行时。但是,请参阅https://github.com/apple/swift-evolution/blob/master/proposals/0161-key-paths.md您几乎肯定不会将字符串传递给非Cocoa Swift(按设计;这是非常不安全的;至少在我们进行反思之前,但即使如此,情况也会非常不同)。但我们将能够间接引用属性。今天你通常会使用闭包来解决这些问题。 –