首页 > 解决方案 > 可以用 NSOrdered 集编码吗?

问题描述

看起来 NSOrdered 不支持 Codable 协议。我正在使用 codable 来解析 alamofire 和 coredata 的数据。请问有什么方法可以实现?求救!:)

 self.photos = try values.decodeIfPresent([Photo].self, forKey: .photos)

标签: swiftcodable

解决方案


JSON 没有有序集。它只有数组。因此,您需要通过调用其初始化程序将数组转换为 NSOrderedSet:

self.photos = NSOrderedSet(array:
    try values.decodeIfPresent([String].self, forKey: .photos) ?? [])

(也就是说,我强烈建议摆脱 NSOrderedSet。它是一个混乱的数据结构,并且在 Swift 中表现不佳。你几乎总是更好地包装一个 Array 并控制何时插入它。如果你相信有性能差异,您应该在假设之前对实际数据进行大量分析。)


推荐阅读