Swift 类型为'的值;AnyClass';(aka';AnyObject.Type';)没有成员'…';
我有一个Swift 类型为'的值;AnyClass';(aka';AnyObject.Type';)没有成员'…';,swift,Swift,我有一个NSManagedObject扩展,它需要动态计算属性。这用于从NSEntity描述中获取jsonKey 以下代码过去工作正常,但对最新Swift版本的更新会引发错误: “类型为'AnyClass'(也称为'AnyObject.type')的值没有成员'jsonKey'” 我假设NSClassFromString不像以前那样具有权限,但我不确定如何升级代码来修复此错误。如果您只想从实例方法访问类变量,则不需要整个NSClassFromString部分。您只需使用type(of:self)
NSManagedObject
扩展,它需要动态计算属性。这用于从NSEntity
描述中获取jsonKey
以下代码过去工作正常,但对最新Swift版本的更新会引发错误:
“类型为'AnyClass'(也称为'AnyObject.type')的值没有成员'jsonKey'”
我假设NSClassFromString不像以前那样具有权限,但我不确定如何升级代码来修复此错误。如果您只想从实例方法访问类变量,则不需要整个
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
}
}
如果希望类的名称为字符串,请使用
String(description:type(of:self))
。但真正的答案是Dávid Pászor提供的答案。你真的试过编译这些代码吗?您会遇到与OP相同的错误。真正的问题不在于调用NSClassFromString
(尽管正如您指出的那样,这也是不正确的),而是因为NSClassFromString
返回一个AnyClass?
实例,该实例没有错误明确指出的jsonKey
方法。
extension NSManagedSyncedObject {
class var jsonKey: String {
return // Some code fetching the proper value
}
var jsonKey: String {
return type(of: self).jsonKey
}
}