在Firestore中保存/返回二维数组的最佳实践是什么?而不是为每个数组创建一个新的集合,而是将数据结构保持在一起更有效吗?谢谢!
custom_ptr<HANDLE, &CloseHandle> phandle{
CreateFileMapping( INVALID_HANDLE_VALUE, nullptr, PAGE_READWRITE, 0, 1024, L"FileName" ) };
答案 0 :(得分:1)
结构应该相当简单
arrays //collection
array_doc_0 //document
array_0 //field
0: 10
1: 10
2: 10
array_1
0: 10
1: 10
2: 10
然后是一个用于保存数组数组的类
class MyArrayClass {
var myArrayOfArrays = [ [Int] ]()
}
在上面,myArrayOfArrays是一个变量,它将包含多个Int数组,如问题所示。
[[10, 10, 10, 10], [10, 10, 10, 10], [10, 10, 10, 10], [10, 10, 10, 10]]
然后是从Firestore读取该结构并填充MyArrayClass对象的代码。
var myNestedArray = MyArrayClass()
let arraysCollection = self.db.collection("arrays")
let thisArrayDoc = arraysCollection.document("array_doc_0")
thisArrayDoc.getDocument(completion: { documentSnapshot, error in
if let err = error {
print(err.localizedDescription)
return
}
guard let doc = documentSnapshot?.data() else { return }
for arrayField in doc {
let array = arrayField.value as! [Int]
myNestedArray.myArrayOfArrays.append(array)
}
for a in myNestedArray.myArrayOfArrays { //output the arrays
print(a)
}
})
最终结果将是一个对象,该对象的var是一个数组数组。闭包的最后一部分遍历我们创建的对象,以验证它的值是数组数组。输出是
[10, 10, 10]
[20, 20, 20]