我正在使用 EVReflection 库的 EVNetworkningObject 对来自Web服务的json响应进行序列化或反序列化。这意味着我无法将属性名称“ description”更改为“ description_”或类似名称。同时,后端不会为我更改其响应属性。如何解决该错误?
错误消息显示
使用Objective-C选择器“描述”进行“描述”的指示 与超类“ NSObject”的“描述”的getter发生冲突 使用相同的Objective-C选择器
答案 0 :(得分:4)
description
是NSObjectProtocol
中名为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
易于使用。我为Codable
和link阅读了this video link来解析json数据。