1

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

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)得到这个错误:类型'AnyClass'(又名'AnyObject.Type')没有成员'threshold'

4

1 回答 1

1

WritableKeyPath<AnyClass,Double>是被接受的AnyClass,但你正在放置特定于类的键路径。

Class1因为AnyClass会失去对其tag对象的访问权限。
同样AnyClass2asAnyClass也会失去对其volume对象的访问权限。
因此\Class1.tag并且\AnyClass2.volume不会为WritableKeyPath<AnyClass,Double>

你可以做的是:

var properties = [AnyKeyPath]()
properties.append(\Class1.tag)
properties.append(\AnyClass2.volume)
于 2018-03-20T09:51:46.277 回答