更新后Firebase查询中的重复内容

时间:2016-03-02 14:12:57

标签: swift2 firebase

我正在使用Swift和Firebase进行有关共享笔记的应用程序。

一旦我加载了显示注释的视图,就会在每个行的表格视图中填充注释信息:

enter image description here

为此,我首先查询以查找用户所遵循的注释的ID,然后从每个ID中获取另一个查询的注释信息。

override func viewDidLoad() {
    super.viewDidLoad()

    listOfNotes.removeAll()

    //QUERY NOTES IDs IN USER

    let userRef = ref.childByAppendingPath("users/" + sessionUserID + "/participating")

    userRef.queryOrderedByValue().observeEventType(.ChildAdded, withBlock: { snapshot in

        //Saving note ID
        let savingNoteID = snapshot.key

        let notesDetailsRef = ref.childByAppendingPath("notes/" + savingNoteID + "/details")

        self.dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

        notesDetailsRef.observeEventType(.Value, withBlock: { snapshot2 in

            let fireNoteTitle = snapshot2.value.objectForKey("noteTitle")! as! String
            let fireNoteText = snapshot2.value.objectForKey("noteText")! as! String
            let fireNoteUpdatedToConvert = snapshot2.value.objectForKey("noteUpdate")! as! String
            let fireNoteUpdatedConverted = self.dateFormatter.dateFromString(fireNoteUpdatedToConvert)

            let newNote = NoteInfo(noteID: savingNoteID as String, noteTitle: fireNoteTitle , noteUsers: "Users" as String, noteText: fireNoteText as String, noteUpdated: fireNoteUpdatedConverted!)

            listOfNotes.append(newNote)
            self.tableNotes.reloadData()

        })
    })
}

然后,选择一行我将转到一个新VC,以查看注释中的信息。

稍后,当我离开笔记视图返回列表时,在viewWillDisappear中,我更新了noteinfo:

ref.updateChildValues([
        "notes/" + sessionNoteID + "/details/noteText": texto,
        "notes/" + sessionNoteID + "/details/noteTitle": title,
        "notes/" + sessionNoteID + "/details/noteCreator" : fireNoteCreator,
        "notes/" + sessionNoteID + "/details/noteCreation" : fireNoteCreation,
        "notes/" + sessionNoteID + "/details/noteUpdate" : String(NSDate())])

以前选择的备注重复出现: (你知道为什么会发生这种情况吗?如果我删除了更新,或者我只是加载了NoteID而不是详细信息,那就完美了。)

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:3)

这似乎没有重复,似乎另一个音符被添加到数组中;时间戳不同。

当您向节点(.Value)添加观察者时,它会使用初始数据触发一次,并且每次数据更改时都会触发。

在这种情况下,如果您更新数据,将调用该块,并添加一个带有新时间戳的“新”注释。