从NSDictionaries获取值以分离变量的正确方法是什么

时间:2016-10-19 22:11:29

标签: swift for-loop firebase nsdictionary

并不完全是我无法解决这个问题,但有正确和不正确的方法,我不想使用有缺陷的方法。我从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变量结束。

2 个答案:

答案 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

            }
        }
    })