title: Codable class does not conform to protocol Decodable
body: <p>Why am I getting a "Type 'Bookmark' does not conform to protocol 'Decodable'" error message?</p>
  
  <pre><code>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
     }
  }
  </code></pre>
  
  <p>I do not wish to save the publication var since the Publication owns the Bookmark but the bookmark needs to know which Publication it belongs to. The decode init of Publication will set the bookmark reference to itself.</p>