Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 类型为'的值;AnyClass';(aka';AnyObject.Type';)没有成员'…';_Swift - Fatal编程技术网

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
    }
}