[Firebase]DatabaseのsnapshotでDecodeしよう!
こんにちは!コドン先生です今日はFirebaseの宣伝についてFirebaseでDatabaseを使用したことがある人なら誰でも知っているように、Firebaseはsnapshot形式でデータを送信します.スナップショットにはDictionary形式のデータが含まれています.
従来の方法
従来の方法
データベースに格納されているデータ
まず私のデータベースのデータを見せてあげましょう.私のDBにはuserという名前のセットの下のドキュメントがあります.ユーザー名はuserです.このドキュメントには、ユーザーの電子メール、名前、プロファイル写真url、プロファイルメッセージ、idが格納されます.
User Model
既存のメソッドを使用する場合、モデル構造は次のようになります.どうせ私は手動でデータを1つずつ入れますから、データベースのキーと属性の名前をつづる必要はありません.struct User: Identifiable {
let name: String
let message: String
let imageURL: String
let email: String
let id: String
}
データをインポートしてユーザー・オブジェクトを作成
既存の方法は次のとおりです.snapshotのデータをdictionaryとしてインポートし、各キーの値を1つずつ入力し、ユーザーの初期化器でオブジェクトを作成する必要があります.func fetchUser(id: String) {
COLLECTIONS_USERS.document(id).getDocument { snapshot, _ in
guard let dictionary = snapshot?.data() else { return }
guard let name = dictionary["name"] as? String else { return }
guard let profileMessage = dictionary["profileMessage"] as? String else { return }
guard let profileImageURL = dictionary["profileImageURL"] as? String else { return }
guard let email = dictionary["email"] as? String else { return }
guard let uid = dictionary["uid"] as? String else { return }
let user = User(name: name, message: profileMessage, imageURL: profileImageURL, email: email, id: uid)
}
}
FirebaseFirestoreSwiftの利用方法
新しいFirebase機能を利用して、上記のプロセスをより簡単にしましょう.
設定
Firebase SDKを初めてインストールする場合は、FirebaseFirestoreSWIFTをインストールする必要があります.(やっぱりベタバージョンですね.)
ユーザー・モデルの定義
モデルの定義も従来の方法とは異なるべきである.まず、協力可能な協定を守らなければならない.また、DBのkeyとpropertyの名前は同じでなければなりません.そうでなければCodingKeyで別に定義すべきでしょう?△私が先に同じことをします.
@DoumentIDというpropertyパッケージを宣言しますこのプロパティは、ドキュメントの名前自体を復号します.(この属性をオプションとして宣言してください!)struct User: Identifiable, Codable {
@DocumentID var id: String?
let name: String
let profileMessage: String
let profileImageURL: String
let email: String
}
データをインポートしてユーザー・オブジェクトを作成
Codable規格に準拠したオブジェクトが作成されましたので、Decodeでオブジェクトを作成します.JSONデータを受信して復号するように、Userオブジェクトを簡単に作成できます.func fetchUser(id: String) {
COLLECTIONS_USERS.document(id).getDocument { snapshot, _ in
let user = try? snapshot?.data(as: User.self)
}
}
Reference
この問題について([Firebase]DatabaseのsnapshotでDecodeしよう!), 我々は、より多くの情報をここで見つけました
https://velog.io/@comdongsam/Firebase-Database의-snapshot을-Decode-해보자
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
struct User: Identifiable {
let name: String
let message: String
let imageURL: String
let email: String
let id: String
}
func fetchUser(id: String) {
COLLECTIONS_USERS.document(id).getDocument { snapshot, _ in
guard let dictionary = snapshot?.data() else { return }
guard let name = dictionary["name"] as? String else { return }
guard let profileMessage = dictionary["profileMessage"] as? String else { return }
guard let profileImageURL = dictionary["profileImageURL"] as? String else { return }
guard let email = dictionary["email"] as? String else { return }
guard let uid = dictionary["uid"] as? String else { return }
let user = User(name: name, message: profileMessage, imageURL: profileImageURL, email: email, id: uid)
}
}
新しいFirebase機能を利用して、上記のプロセスをより簡単にしましょう.
設定
Firebase SDKを初めてインストールする場合は、FirebaseFirestoreSWIFTをインストールする必要があります.(やっぱりベタバージョンですね.)
ユーザー・モデルの定義
モデルの定義も従来の方法とは異なるべきである.まず、協力可能な協定を守らなければならない.また、DBのkeyとpropertyの名前は同じでなければなりません.そうでなければCodingKeyで別に定義すべきでしょう?△私が先に同じことをします.
@DoumentIDというpropertyパッケージを宣言しますこのプロパティは、ドキュメントの名前自体を復号します.(この属性をオプションとして宣言してください!)
struct User: Identifiable, Codable {
@DocumentID var id: String?
let name: String
let profileMessage: String
let profileImageURL: String
let email: String
}
データをインポートしてユーザー・オブジェクトを作成
Codable規格に準拠したオブジェクトが作成されましたので、Decodeでオブジェクトを作成します.JSONデータを受信して復号するように、Userオブジェクトを簡単に作成できます.
func fetchUser(id: String) {
COLLECTIONS_USERS.document(id).getDocument { snapshot, _ in
let user = try? snapshot?.data(as: User.self)
}
}
Reference
この問題について([Firebase]DatabaseのsnapshotでDecodeしよう!), 我々は、より多くの情報をここで見つけました https://velog.io/@comdongsam/Firebase-Database의-snapshot을-Decode-해보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol