2016-07-14 205 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结构,它可能会使我的问题更加清晰 –