类型“ AnyClass”(也称为“ AnyObject.Type”)的值没有成员“…”

时间:2018-11-07 16:32:54

标签: swift

我有一个NSManagedObject扩展名,它需要动态计算属性。这用于从NSEntity描述中获取jsonKey。

下面的代码过去工作正常,但是对最新的Swift版本进行更新会引发错误:

  

“类型为'AnyClass'的值(也称为'AnyObject.Type')没有成员'jsonKey'”。

extension NSManagedSyncedObject {   
    class var jsonKey: String {
        return // Some code fetching the proper value
    }

    var jsonKey: String {
        return NSClassFromString("\(type(of: self))")!.jsonKey
    }
}

我认为NSClassFromString不像以前那样宽容,但是我不确定如何升级代码来修复此错误。

2 个答案:

答案 0 :(得分:2)

如果只想从实例方法访问类变量,则不需要整个NSClassFromString部分。您只需使用type(of: self)即可。

extension NSManagedSyncedObject {   
    class var jsonKey: String {
        return // Some code fetching the proper value
    }

    var jsonKey: String {
        return type(of: self).jsonKey
    }
}

答案 1 :(得分:0)

如果要将类的名称设置为String,请使用String(describing:type(of:self))。但是真正的答案是DávidPásztor提供的答案。