Ram*_*att 12 realm swift swift4 codable
我有以下Swift 4 Codable类,它继承自Realm的Object类型:
final class SearchResult: RealmSwift.Object, Codable {
@objc dynamic var name: String = ""
@objc dynamic var region: String = ""
enum CodingKeys: String, CodingKey {
case name = "name"
case region = "region"
}
}
Run Code Online (Sandbox Code Playgroud)
这里的期望是该init(from decoder: Decoder)方法被合成,所以我不必自己实现它,这是一个巨大的便利.但是,不实现这会产生以下编译器错误:
super.init isn't called on all paths before returning from initializer
有三种方法可以摆脱编译器错误,但没有一种方法是好的:
实现一个init(from decoder: Decoder)只调用的空方法super.init().这似乎阻止了合成,意味着没有任何实际解码,因为它只是一个空方法.
init(from decoder: Decoder)手动实现整个方法.这有效,但现在使用的乐趣Codable几乎消失了.
删除所有与Realm相关的代码.现在Codable按预期工作,但是,现在我不能再使用Realm了.
这对我来说似乎是一个Swift错误,因为它应该检测到init(from decoder: Decoder)实际上是在实现,而不是手动执行.
我不知道的任何建议或解决方法?
| 归档时间: |
|
| 查看次数: |
1102 次 |
| 最近记录: |