使用.Value和.ChildAdded

时间:2016-02-10 12:44:00

标签: ios swift firebase

我有一个使用Swift从Firebase检索的数据列表。 我尝试使用.Value获取数据,Firebase会返回一个字典,其中包含每个项目的ID以及每个ID相关的信息。

我调用的端点是 / ideas

    let ideasRef = firebase.childByAppendingPath(IdeaStructure.PATH_IDEAS)
    ideasRef.observeEventOfType(.Value, withBlock: { snapshot in
        print(snapshot.value)
        }, withCancelBlock: { error in
            print(error.description)
    })

为了优化这一点,我改为.ChildAdded。在这种情况下,我只获得没有ID关联的单个项目。

是否可以使用.ChildAdded获取每个项目的ID?

如果没有,我如何将Firebase生成的ID保存到每个项目中?目前我正在以这种方式保存每个项目:

    let ideasRef = firebase.childByAppendingPath(IdeaStructure.PATH_IDEAS).childByAutoId()
    let idea = [
        IdeaStructure.FIELD_MESSAGE: message,
        IdeaStructure.FIELD_CREATOR_ID: userId,
        IdeaStructure.FIELD_CREATION_DATE: NSDate().formattedISO8601
    ]
    ideasRef.setValue(idea)

1 个答案:

答案 0 :(得分:3)

要获取快照的密钥,请访问其key属性:

let ideasRef = firebase.childByAppendingPath(IdeaStructure.PATH_IDEAS)
ideasRef.observeEventOfType(.Value, withBlock: { snapshot in
    print(snapshot.key)
    print(snapshot.value)
}, withCancelBlock: { error in
    print(error.description)
})

Firebase's excellent programming guide for iOS中涵盖了这个以及更多主题。