带有未定义类的可写keypath

时间:2018-03-20 09:11:29

标签: ios swift swift4 keypaths

我需要一组可写的键路径来编辑变量,但是Class是未定义的。我怎么能这样做?

var properties: [ WritableKeyPath< AnyClass, Double > ]

properties.append( \Class1.tag )
properties.append( \AnyClass2.volume )

func setPropertie (keyIndex: Int, value : Double) {
    anyObject[keyPath: properties[keyIndex] ] = value
}

在这种情况下,尝试追加(\ Class1.tag)会出现此错误:输入&#39; AnyClass&#39; (又名&#39; AnyObject.Type&#39;)没有会员&#39;阈值&#39;

1 个答案:

答案 0 :(得分:1)

您的WritableKeyPath<AnyClass,Double>需要AnyClass,但您需要使用特定于类的密钥路径。

Class1 AnyClass将无法访问tag对象。
同样,AnyClass2 AnyClass也会失去volume对象的访问权限。
因此,\Class1.tag\AnyClass2.volume无法为WritableKeyPath<AnyClass,Double>

工作

你可以做的是:

var properties = [AnyKeyPath]()
properties.append(\Class1.tag)
properties.append(\AnyClass2.volume)