为什么会出现“类型'书签'不符合协议(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/

10-10 11:31