CodableFirebase 0.2.1

CodableFirebase 0.2.1

Oleksii DykanMarcos Griselli 维护。



  • Oleksii Dykan

CodableFirebase

使用 CodableFirebase

CocoaPods Carthage compatible Build Status

概览

这个库可以帮助您使用遵守 Codable 协议的自定义类型与 Firebase 进行交互。以下是一个自定义模型的示例:

struct Model: Codable {
    enum MyEnum: Int, Codable {
        case one, two, three
    }
    
    let stringExample: String
    let booleanExample: Bool
    let numberExample: Double
    let dateExample: Date
    let arrayExample: [String]
    let optionalExample: Int?
    let objectExample: [String: String]
    let myEnumExample: MyEnum
}

Firebase 实时数据库使用

这就是您如何使用库与 Firebase 实时数据库 的方法

import Firebase
import CodableFirebase

let model: Model // here you will create an instance of Model
let data = try! FirebaseEncoder().encode(model)

Database.database().reference().child("model").setValue(data)

以下是从 Firebase 实时数据库 读取相同值的方法

Database.database().reference().child("model").observeSingleEvent(of: .value, with: { snapshot in
    guard let value = snapshot.value else { return }
    do {
        let model = try FirebaseDecoder().decode(Model.self, from: value)
        print(model)
    } catch let error {
        print(error)
    }
})

Firebase Cloud Firestore 使用

这是如何使用 Firebase Cloud Firestore 编码模型的方法

import Firebase
import CodableFirebase

let model: Model // here you will create an instance of Model
let docData = try! FirestoreEncoder().encode(model)
Firestore.firestore().collection("data").document("one").setData(docData) { error in
    if let error = error {
        print("Error writing document: \(error)")
    } else {
        print("Document successfully written!")
    }
}

以下是使用 Firebase Cloud Firestore 解码相同模型的方法

Firestore.firestore().collection("data").document("one").getDocument { document, error in
    if let document = document {
        let model = try! FirestoreDecoder().decode(Model.self, from: document.data())
        print("Model: \(model)")
    } else {
        print("Document does not exist")
    }
}

如何在云Firestore中使用 GeoPointDocumentReferenceFieldValueTimestamp

为了使用这些类型与 Cloud Firestore 相结合,您需要在您的应用中某个地方添加以下代码

extension DocumentReference: DocumentReferenceType {}
extension GeoPoint: GeoPointType {}
extension FieldValue: FieldValueType {}
extension Timestamp: TimestampType {}

现在它们可以成为 Codable,并且可以与 FirestoreEncoderFirestoreDecoder 正确使用。

请注意由于 FieldValue 只用于 setData()updateData(),它只采用 Encodable 协议。

集成

CocoaPods (iOS 9+)

您可以通过将 CodableFirebase 添加到您的 Podfile 中来使用 CocoaPods 进行安装

platform :ios, '9.0'
use_frameworks!

target 'MyApp' do
  pod 'CodableFirebase'
end

请注意,这需要 CocoaPods 版本 36,并且您的 iOS 部署目标至少为 9.0

Carthage (iOS 9+)

您可以通过将 CodableFirebase 添加到您的 Cartfile 中来使用 Carthage 进行安装

github "alickbass/CodableFirebase"