的使用雨燕
问题描述:
类到火力地堡数据库保存阵列我有一个类数组,它看起来像这样:的使用雨燕
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保存类到火力地堡数据库,这在上面已经显示在图像中。
我的问题是如何将整个数组保存到数据库中?使用我的代码,我只能从数组中保存一个类,并且我想将所有项目保存到数据库中,以便它们最终看起来像一个类在图像中执行的一样。你可以比较一下,填充tableView,在那里你需要“indexPath.row”来填充所有的项目,而不是只有一个。我希望我很清楚!
答
您无法将类保存到Firebase中。但是..类有一个类似于字典的结构(属性和值,如键:值对等)。
一般应避免Firebase中的数组 - 它们的功能有限,无法访问单个元素,对于任何更改,您都必须重新编写整个阵列。
使用通过首选键创建父键名的结构通常是首选。
最简单的解决方案是简单地将智能添加到课程中,以便创建一本字典,然后自行保存。
工艺用户类
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
这是非常相似的,你想要的结构。创建这种结构还有很多其他方法。例如,您可以使用代码制作整个字典,并一次写完所有字典。
不好意思打错了,我是这么写的。
答
Firebase对阵列没有本地支持。如果你存储一个数组,它确实被存储为一个“整数”作为键名的“对象”。
// we send this
['hello', 'world']
// Firebase stores this
{0: 'hello', 1: 'world'}
你混淆术语 “对象” 与 “类”? – Alexander
我对编程颇为陌生,当我说“Class”时,我可能是指对象。但是不是myClass一个类? –
'myClass'是一个类。但是,约定是用大写字母命名类型(类,结构,协议和枚举)。一个更传统的适当的名字是'MyClass'。类是制作物体的蓝图。 'var myItems = [MyClass]()'创建一个空数组来存储'MyClass'类型的对象。对象具有小写的第一个字母。 – Alexander