【发布时间】:2019-03-27 19:19:18
【问题描述】:
我有一个 Realm 模型类,我需要它是可解码的,以便我可以从 JSON 序列化它并将其保存到数据库。每个PortfolioItem 都与一个Product 相关联,有时我需要通过反向关系从Product 到达PortfolioItem。这就是我拥有LinkingObjects 属性的原因。问题是当我尝试遵守Decodable 协议时。编译器给我一个错误 Cannot automatically synthesize 'Decodable' because 'LinkingObjects<PortfolioItem>' does not conform to 'Decodable' 。如何处理?我在网上发现的关于 LinkingObjects 和 Decodable 的信息很少,我不知道如何解决这个问题。
class PortfolioItem: Object {
@objc dynamic var id: String = ""
@objc dynamic var productId: String = ""
@objc dynamic public var product: Product?
convenience init(id: String, productId: String) {
self.init()
self.id = id
}
}
final class Product: Object, Decodable {
@objc dynamic var id: String = ""
@objc dynamic var name: String = ""
private let portfolioItems = LinkingObjects(fromType: PortfolioItem.self, property: "product")
public var portfolioItem: PortfolioItem? {
return portfolioItems.first
}
convenience init(id: String, name: String) {
self.init()
self.id = id
}
}
非常感谢 Chris Shaw 帮助我解决了这个问题。我写了一篇更深入的文章如何设置 Decodable 和 LinkingObjects,look HERE。
【问题讨论】:
-
部分问题是它不是一个原语(String、Num、bool 等),因此您需要为此用例包含额外的代码。您是否尝试使用
JSONDecoder().decode(? -
是的,我正在尝试那样做。
标签: swift realm realm-mobile-platform