与Swift中的父属性“ description”冲突

时间:2019-01-03 10:24:26

标签: swift nsobject

我正在使用 EVReflection 库的 EVNetworkningObject 对来自Web服务的json响应进行序列化或反序列化。这意味着我无法将属性名称“ description”更改为“ description_”或类似名称。同时,后端不会为我更改其响应属性。如何解决该错误?

enter image description here

错误消息显示

  

使用Objective-C选择器“描述”进行“描述”的指示   与超类“ NSObject”的“描述”的getter发生冲突   使用相同的Objective-C选择器

4 个答案:

答案 0 :(得分:4)

descriptionNSObjectProtocol中名为NSObject的协议的属性。

public var description: String { get }

因此,您不能在任何NSObject子类中以相同名称初始化任何变量。

有关更多信息,请访问https://developer.apple.com/documentation/objectivec/nsobjectprotocol/1418746-description

请尝试通过使用不同名称初始化变量,或通过Codable实施注释中建议的@vadian的协议来进行尝试。

答案 1 :(得分:0)

最简单的解决方法是重命名属性。例如:Set FolderTasks1 = Application.Session.GetDefaultFolder(olFolderToDo).Items Set FolderTasks2 = Application.Session.Accounts("xx@outlook.com").DeliveryStore.GetDefaultFolder(olFolderToDo).Items [insert magic joining thing here. Call the new collection joinedTasks] strFilter = Format(Now, "ddddd") strFilter = "[Start Date] <= " & Chr(34) & strFilter & Chr(34) & " And Not [status] = ""Completed"" And Not [Categories] = ""Project""" joinedTasks.Sort "[Start Date]" Set ListOfTasks = joinedTasks.Restrict(strFilter)

答案 2 :(得分:0)

我假设您正在使用可解码的JSON来获取JSON数据。如果是这样,则不需要将您的超类设为NSObject。出现此错误的原因是,该名称与超类“ NSObject”中“描述”的getter发生冲突。因此,使EVNetworking(这是您的超类)对象成为仅符合可解码协议的类,而不符合NSObject类型的类。

答案 3 :(得分:0)

正如vadian在评论中建议的那样,我决定使用Codable协议而不是EVReflection,因为Codable易于使用。我为Codablelink阅读了this video link来解析json数据。