2016-07-06 135 views
2

類到火力地堡數據庫保存陣列我有一個類數組,它看起來像這樣:的使用雨燕

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

回答

5

您無法將類保存到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

0

Firebase對陣列沒有本地支持。如果你存儲一個數組,它確實被存儲爲一個「整數」作爲鍵名的「對象」。

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

Read this post for better understanding.