2016-07-14 199 views
0

存儲的數據所以我的火力地堡數據結構是這樣的:火力地堡:訪問通過childByAutoID

My JSON data structure

我的問題很簡單。如何訪問通過childByAutoID方法存儲的ID,即它們的值的關鍵是什麼。我想這樣做的原因是因爲我想創建一個變量來保存這個ID,並且這只是一個(由childByAutoId生成的值),例如,如果您查看My JSON數據結構圖像,KMVrGnR76E6vrj61K21將存儲在變量和這一點。我當前的查詢看起來是這樣的:

databaseRef.child("Jokes").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

      let jokeId = snapshot.//something??? not .key as this returns Jokes 


     }) 

我明白childByAutoId生成一個唯一的標識符,但肯定有一定檢索和存儲標識的方式(僅此一點,不是所有的子女)的原因很明顯...

+0

請讓別人知道我的答案是通過接受它的工作,如果它:) – rigdonmr

+0

@rigdonmr謝謝你試圖幫助,不幸的是這沒有工作,因爲關鍵是笑話。因此我的數組返回[Jokes,Jokes,Jokes],而不是autoId。 –

回答

1

我有答案。要訪問隨機生成的autoId的鍵,必須將其作爲FIRDataSnapShot傳遞。

for snap in snapshot.children.allObjects { 

      let id = snap as! FIRDataSnapshot 

      print(id.key) 

     } 

這會給你隨機生成的密鑰。

2

snapshot.key應該讓你的每個笑話的ID在這種情況下

+0

謝謝你試圖幫忙,不幸的是這沒有工作,因爲關鍵是笑話。因此我的數組返回[Jokes,Jokes,Jokes],而不是autoId。 –

0

內塊,joke.key將是目前孩子的ID。

請參閱FIRDataSnapshot

+0

我改變了我的問題,因爲我認爲它有點不清楚,因爲你的建議會返回「笑話」,而不是ID –

+0

你試過了嗎?在您提供的代碼中,「笑話」會指向「笑話」的子對象。如果你能夠得到值「JokeText」,那麼你正在查看一個對象,其關鍵是生成的ID。 –

+0

我感謝你的幫助,我已經嘗試過,但不幸的是它不返回id的值,它返回「笑話」。我已經包含了我感興趣的代碼,如果您引用了JSON結構,它可能會使我的問題更加清晰 –