ios - 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
模型
解决方案
对于它的价值,任何通过 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 的特殊扩展。
推荐阅读
- matplotlib - 如何使用来自 Arduino 的串行数据更新 matplotlib 中的文本?
- swift - 如何在 Swift 4 中将 TimeInterval 转换为 CMTime?
- image-processing - 如何调整 OpenALPR 性能?
- arrays - $unwind 用于聚合的双嵌套数组
- javascript - MySQL存储过程使用express.js返回未定义
- gis - 是否有任何 API 用于选择要在绘图管理器上编辑的 Bingmap 折线?
- css - 是否可以在@page 上选择特定的课程?
- python - Gunicorn 找不到系统 Renviron 错误
- python - Python 代码作为 Prime 和函数
- c - 计算错误 C uint64_t