前提
Swiftでインスタグラムのクローンを作っています。
投稿のモデルファイルを作成中に以下のエラーメッセージが発生しました。
実現したいこと
- エラーの解決
- Swiftへの深い理解の実現
発生している問題・エラーメッセージ
Type 'Post' does not conform to protocol 'Decodable'
該当のソースコード
Post.swift
1import SwiftUI 2import Firebase 3import FirebaseFirestoreSwift 4 5struct Post: Identifiable, Decodable { 6 @DocumentID var id: String? 7 let ownerUid: String 8 let ownerUsername: String 9 let caption: String 10 var likes: Int 11 let imageURL: String 12 let timestamp: Timestamp 13 let ownerImageURL: String 14}
起きた状況
投稿機能に必要なものとして何日前、何時間前に投稿されたかわかるようにするために定数timestampを定義。typeはTimestampにしたいので、FirebaseをインポートしたがTimestampが有効になっていないがために起きたエラー。
試したこと(その1)
Type 'Post' does not conform to protocol 'Decodable'でググったところ、以下のwebページにヒットした。
明確な型定義ができていないために起こるエラーで、
let timestamp: Timestampで起きることが確定。
https://qiita.com/yum_fishing/items/8feca38b654fb922dc53
試したこと(その2)
次に以下のwebページにヒット。
https://stackoverflow.com/questions/48568373/codable-class-does-not-conform-to-protocol-decodable
なんかよくわからなかったから解説お願いしたい。もしくは初心者がわかりやすいページ教えてもらえるとありがたいです。
補足情報(FW/ツールのバージョンなど)
macOS Ventura 13
XCode 14.1
追記
let timestamp: timestampにしたところ、緑表示にはなったがCannot find type 'timestamp' in scopeで怒られました。