首页 > 解决方案 > Swift iOS - 将数据作为包含自定义模型的自定义模型添加到 Firestore

问题描述

所以我有两个自定义模型类。一个是a Story,另一个是Page。Story 包含多个属性,包括pages.

struct Story {

var name: String
var pages: [Page]
var tags: [String]
var likes: [String]
var isPrivate: Bool

var dictionary: [String: Any] {
    return [
        "name": name,
        "pages": pages,
        "tags": tags,
        "likes": likes,
        "isPrivate": isPrivate,
    ]
}

struct Page {

let thumbnail: String
let image: String?
let video: String?

var dictionary: [String: Any] {
    return [
        "thumbnail": thumbnail,
        "image": image as Any,
        "video": video as Any
    ]
}

当我上传到 Firebase 时,我基本上希望 pages 对象成为 Story 对象中的子集合。但是我对如何正确地做到这一点感到困惑,因为我可以让模型从 Firebase 响应中正确映射和解码。

我能想到的唯一方法是在数据库上创建一个故事,获取带有 ID 的回调,然后在其中创建页面。问题是我的Story模型不会包含自定义Page模型

标签: iosswiftfirebasegoogle-cloud-firestoreswift4

解决方案


对于它的价值,任何通过 Google 来这里寻找自定义数据模型处理 + Swift + Firebase 的人都应该使用该Codable协议检查 Firebase 的这个功能。

https://firebase.google.com/docs/firestore/manage-data/add-data#custom_objects

具体来说,这使您可以访问一个setData看起来像document("LA").setData(from: city).

您应该不再需要在 Firebase v7.3+ 中进行额外的导入,这太棒了!如果您仍在使用 v6 或更早版本,则需要它。

如果您在代码中无权访问此函数,那是因为您需要import FirebaseFirestoreSwift哪些是 v7.0 之前的 Swift 的特殊扩展。


推荐阅读