并不完全是我无法解决这个问题,但有正确和不正确的方法,我不想使用有缺陷的方法。我从firebase获得了这个快照,并将其声明为NSDictionary:
let commentDict = commentsDictionary.value as? NSDictionary
当我打印commentDict时,它看起来像这样:
commentText = Fififgkffy;
postedBy = USXhV0QYkpbSzAmXgfeteXHuoqg2;
commentText = Fhzifigh;
postedBy = USXhV0QYkpbSzAmXgfeteXHuoqg2;
CommentDict将始终如下所示。它总是有2个项目。我想知道抓取项目并将它们分配给变量的正确方法。我之前使用过的一种方法,但只是在一个项目上是将它放在for循环中:
if name as! String == "postedBy" {
然后我得到" postedBy"的价值。字典项目。虽然有2个项目,我应该为commentText和postedBY做一个小数组,并且有2个数组,每个有2个项目吗?另一个重要的一点是,这些必须留在他们自己的团体中。我必须跟踪哪些" commentText"是第一组,也是第二组,与#34; postedBy"相同。
从长远来看,我必须以commentText1,postedBy1,commentText2,postedBy2作为单独的String变量结束。
答案 0 :(得分:0)
这就是我最终要做的事情,但我只想知道是否有更好或更好的"正确的"这样做的方式。我可能必须在这个方法中放入一些安全if语句,以确保数组得到正确填充和所有这些。
if let commentDict = commentsDictionary.value as? NSDictionary {
for(name, value) in commentDict {
commentInfoArray.append(value as! String)
}
let comment1Text = commentInfoArray[0]
let comment1User = commentInfoArray[1]
let comment2Text = commentInfoArray[2]
let comment2User = commentInfoArray[3]
}
答案 1 :(得分:0)
If it's only postedBy and commentText relation that you are looking for try using this as your structure:-
USXhV0QYkpbSzAmXgfeteXHuoqg2 : comment1 : true,
comment2 : true,
//postedById : [postText]
Then at your retrieval use a dictionary to append your data to:-
db_Ref.child(userID).observeSingleEvent(of: .value, with: {(snap) in
if let commentDict = snap.value as? [String:AnyObject]{
for each in commentDict{
print(each.key) // Append your key here
}
}
})