为什么会出现“类型'书签'不符合协议(protocol)'可解码'”错误消息?
class Bookmark: Codable {
weak var publication: Publication?
var indexPath: [Int]
var locationInText = 0
enum CodingKeys: String, CodingKey {
case indexPath
case locationInText
}
init(publication: Publication?, indexPath: [Int]) {
self.publication = publication
self.indexPath = indexPath
}
}
我不希望保存发布变量,因为发布拥有书签,但是书签需要知道它属于哪个发布。 Publication的解码初始化将把书签引用设置为其自身。
最佳答案
这是因为Publication不可解码(您尚未显示它是什么,所以很难说出来),或者是因为weak
上的publication
指定。
无论哪种方式,都很容易修复:您只需要实现init(from:)
即可完成Decodable的实现;编译器只是在告诉您该实现无法综合。
关于swift - 可编码类不符合协议(protocol)可解码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48568373/