与 Swift 中的父 属性 "description" 冲突

Conflicting with parent property "description" in Swift

我正在使用 EVReflection 库的 EVNetworkningObject 来序列化或反序列化来自 Web 服务的 json 响应。这意味着我无法将 属性 名称 "description" 更改为 "description_" 或类似名称。同时,后端不会为我更改他们的响应 属性。我怎么可能修复此错误?

错误消息显示

Getter for 'description' with Objective-C selector 'description' conflicts with getter for 'description' from superclass 'NSObject' with the same Objective-C selector

descriptionNSObjectNSObjectProtocol 协议的 属性。

public var description: String { get }

因此您不能在任何 NSObject 子类中使用 相同名称 启动任何变量。

更多请访问https://developer.apple.com/documentation/objectivec/nsobjectprotocol/1418746-description.

请尝试使用 不同的名称 启动变量,或者通过 Codable 协议实现 @vadian 在评论中建议的内容。

迄今为止最简单的解决方法是重命名 属性。例如:var announcementDescription : String?

我假设您正在使用 JSON 解码器来获取 JSON 数据。如果是这样,你不需要使你的超级 class 类型为 NSObject。您收到此错误的原因是因为名称与来自 superclass 'NSObject' 的 'description' 的 getter 冲突。因此,使 EVNetworking(这是您的超级 class)对象成为一个 class,它仅符合可解码协议,而不是 NSObject 类型的 class。

正如 vadian 在评论中建议的那样,我决定使用 Codable 协议而不是 EVReflection,因为 Codable 很容易使用。我阅读此 link for Codable and this video link 以解析 json 数据。