的使用雨燕

问题描述:

类到火力地堡数据库保存阵列我有一个类数组,它看起来像这样:的使用雨燕

var myItems = [myClass]() 

class myClass: NSObject { 
    var a: String? 
    var b: String? 
    var c: String? 
    var d: String? 
} 

我想是叫myItems数组保存到我的数据库,并有内部的每类数据库内的个人部分。基本上,我希望每个类在这个图像中看起来像一个叫做“Eko”的类:enter image description here

为了说明,在“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”来填充所有的项目,而不是只有一个。我希望我很清楚!

+0

你混淆术语 “对象” 与 “类”? – Alexander

+0

我对编程颇为陌生,当我说“Class”时,我可能是指对象。但是不是myClass一个类? –

+0

'myClass'是一个类。但是,约定是用大写字母命名类型(类,结构,协议和枚举)。一个更传统的适当的名字是'MyClass'。类是制作物体的蓝图。 'var myItems = [MyClass]()'创建一个空数组来存储'MyClass'类型的对象。对象具有小写的第一个字母。 – Alexander

您无法将类保存到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 

这是非常相似的,你想要的结构。创建这种结构还有很多其他方法。例如,您可以使用代码制作整个字典,并一次写完所有字典。

不好意思打错了,我是这么写的。

+0

令人惊叹!正是我需要的,非常感谢你! –

+0

在Android中,我注意到我们可以直接传递对象。为什么与swift不一样? – Satyam

+0

@Satyam不确定这个问题的含义。也许你可以提出一个新问题并进行详细说明,以便我们提出一个解决方案。 – Jay

Firebase对阵列没有本地支持。如果你存储一个数组,它确实被存储为一个“整数”作为键名的“对象”。

// we send this 
['hello', 'world'] 
// Firebase stores this 
{0: 'hello', 1: 'world'} 

Read this post for better understanding.