在javascript中,我知道我可以使用以下内容:
var foo = '';
function changeVariable(variable, data){
this[variable] = data;
}
changeVariable("foo", "bar");
我可以在swift中做到这一点吗?
func toggleFadeIn (element: String, active: Bool)
{
if(!active){
self.element.alpha = 0;
self.element.transform = CGAffineTransform(translationX: 0, y: 25)
}
}
答案 0 :(得分:0)
Javascript是一种动态语言,具有在运行时以这种方式修改对象的功能。
静态语言(如Swift,Java,C#和许多其他语言)需要一个反射库来实现此类行为。不幸的是,Swift具有非常有限的反射能力(Mirror
),并且还没有能力通过String
名称修改对象/结构成员。
如果你详细说明你究竟想要实现的目标,我们将能够更好地提出解决方案。
答案 1 :(得分:-2)
您所描述的内容可以在NSObjects
上使用KVO。它依赖于Objective-C动态消息传递,但它确实有效。查看Apple's Key Value Programming Guide中记录的函数setValue:forKey:
。
请注意,这绝对不是快速的,不推荐。