我有一个类数组,如下所示:
var myItems = [myClass]()
class myClass: NSObject {
var a: String?
var b: String?
var c: String?
var d: String?
}
我想要的是将名为myItems的数组保存到我的数据库中,并将每个类都放在数据库内的个人部分中。基本上,我希望每个类看起来像这个图像中的“Eko”:
为了澄清,在“Eko”之后,应该显示数组myItems中的所有其余类。为了实现图片所展示的内容,我使用了以下代码:
let data = self.myItems[0]
let currU = FIRAuth.auth()?.currentUser?.uid
let userRef = self.ref.child("users").child(currU!).child(data.a!)
userRef.updateChildValues(["a": data.a!, "b": data.b!, "c": data.c!, "d": data.d!])
显然,这只会将索引0处的类从数组myItems保存到Firebase数据库中,该数据库显示在上图中。
我的问题是,如何将整个数组保存到数据库中?使用我的代码,我只能从数组中保存1个类,并且我想将所有项目保存到数据库中,这样它们最终看起来就像一个类在图像中所做的那样。你可以将它与填充tableView进行比较,你需要使用“indexPath.row”来填充所有项而不是只有一项。我希望我足够清楚!
答案 0 :(得分:6)
您无法将课程保存到Firebase中。但是..类具有与字典类似的结构(属性和值,如键:值对等)。
Firebase中的数组通常应该避免 - 它们的功能有限,无法访问单个元素,并且您必须重新编写整个数组。
通常首选使用通过childByAutoId创建父键名称的结构。
最简单的解决方案是简单地向类中添加智能,这样它就会创建一个字典,然后自行保存。
制作用户类
UserClass
var name = String()
var food = String()
func saveToFirebase() {
let usersRef = myFirebase.child(users)
let dict = ["name": self.myName, "food", self.myFood]
let thisUserRef = usersRef.childByAutoId()
thisUserRef.setValue(dict)
}
}
和用于存储它们的数组
var usersArray = [Users]()
填充数组
var aUser = UserClass()
aUser.name = "Leroy"
aUser.food = "Pizza"
usersArray.append(aUser)
var bUser = UserClass()
bUser.name = "Billy"
bUser.food = "Tacos"
usersArray.append(bUser)
然后遍历数组,保存每个用户
for user in usersArray {
user.saveToFirebase()
}
这将导致
users
-Ykasokokkpoad
name: Leroy
food: Pizza
-YJlaok9sk0sd
name: Billy
food: Tacos
这与您想要的结构非常相似。还有许多其他方法可以创建这种结构。例如,您可以在代码中制作整个字典并一次性写出来。
Pardon拼写错误,我在飞行中写道。
答案 1 :(得分:0)
Firebase没有对数组的本机支持。如果存储数组,它实际上存储为“对象”,整数作为键名。
// we send this
['hello', 'world']
// Firebase stores this
{0: 'hello', 1: 'world'}