В основном я испытываю некоторые трудности, пытаясь изменить значение из Firebase в виде таблицы. В настоящее время я пытаюсь создать функцию Facebook-post-like, позволяющую людям понравиться ваш пост. Однако я не совсем уверен, как я буду продолжать это. Я хочу дать пользователю возможность понравиться каждому сообщению, а затем сохранить предыдущие понравившиеся + подобные, которые были предоставлены, и обновить его в firebase. На данный момент у меня есть только код для отображения каждого сообщения, а также @IBAction от кнопки (как кнопка).Swift/Firebase change value from tableview
Я не уверен, как мне удастся получить доступ к каждому конкретному сообщению через только табличное представление, используя indexPath.row (?). Вот код, который я до сих пор:
Сообщения редактирование:
Так в основном у меня есть TableView, содержащий ячейку просмотра таблицы, которая отображает количество подобных каждому пост имеет. Чтобы сделать это, у меня есть этот код в моем viewDidLoad(), чтобы просто извлечь данные из Firebase:
ref.childByAppendingPath("posts").queryOrderedByChild("timeRegistered").observeEventType(FEventType.ChildAdded) { (snapshot:FDataSnapshot!) in
var dict = [String:String]()
dict["keys"] = snapshot.key as? String
dict["votes"] = snapshot.value["likes"] as? String
self.posts.append(dict)
self.tableView.reloadData()
}
Просто говоря, этот код работает, используя этот код в cellForRowAtIndexPath: cell.textLabel!.text = String(posts[indexPath.row]["names"]!)
Тем не менее, я думал, что код, который я использовал в viewDidLoad (.ChildAdded функция) будет работать с ChildChanged, как хорошо, так это то, что я придумал:
ref.childByAppendingPath("posts").queryOrderedByChild("timeRegistered").observeEventType(FEventType.ChildChanged) { (snapshot:FDataSnapshot!) in
var dict = [String:String]()
dict["keys"] = snapshot.key as? String
dict["votes"] = snapshot.value["votes"] as? String
self.posts.append(dict)
self.tableView.reloadData()
}
К сожалению, это выглядит как TableView просто отображает новое значение (значение, измененное с IBActi я также предоставлю этот код.) - в то время как старое значение остается там. Это код для изменения значения:
var key = posts[1]["keys"]
ref.childByAppendingPath("posts").childByAppendingPath(key!).updateChildValues(["name":"Test name"])
tableView.reloadData()
Тем не менее, пытаясь выяснить, лучший способ изменить точное значение, с помощью индекса - но это не происходит сейчас (поэтому сообщения [1] [ «ключи»]). Кажется, вы понимаете, в чем проблема?
Подводя итог: хочу щелкнуть по кнопке внутри ячейки таблицы просмотра и добавить понравившиеся сообщения к конкретному сообщению и обновить общее количество в реальном времени.
Это немного неясно, что вы пытаетесь сделать; а также, какой интерфейс? «Голоса» и «нравится» то же самое? Одним простым решением будет кнопка «+» на каждой строке, а когда пользователь нажимает кнопку «+», это увеличивает голоса/понравится. Вы знаете, в какой строке это щелкнуть кнопкой мыши или, возможно, создать пользовательскую ячейку, которая обрабатывает клик. – Jay
Итак, в основном я хочу добавить функцию «любит», как вы можете ее назвать, - и я хочу, чтобы она обновляла записи сразу после нажатия «like» (старый нравится + 1 новый, как). – askaale
Думаю, что так ... Не переусердствуйте. Просто имейте IBAction, который отвечает на нажатие кнопки +. Определите, какая строка была нажата, затем получите текущие симпатии из вашего массива сообщений [clickedRow], увеличивайте количество понравившихся, а затем обновите значение в Firebase с помощью ключа firebase для этой строки и дочернего узла like.setValue (голосов). – Jay