我有一个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不像以前那样宽容,但是我不确定如何升级代码来修复此错误。
答案 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提供的答案。