Как сохранить разделение tableView после перезагрузки при подключении к Firebase - PullRequest
0 голосов
/ 07 декабря 2018

Я новичок в программировании и в настоящее время пробую что-то с Firebase.Я создаю приложение, похожее на ленту новостей, которое отображает ячейки пользовательских типов в моем tableView.В настоящее время у меня есть проблема, что после перезапуска приложения разделение похоже на то, что в firebase.Но я хочу, чтобы новейшие были первыми и оставались там.Я думал о сохранении массива в основных данных, но мне не очень нравится этот вариант.Итак, мой вопрос: как сортировать сообщения от самых новых к самым старым?

var ref: DatabaseReference!

var posts = [String]()
var timeRef = [String]()
var userRef = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    addSlideMenuButton()

    ref = Database.database().reference()

    ref.child("posts").observe( .childAdded, with: { snapshot in

        let newPost = snapshot.value as? NSDictionary
        let post_title:String = newPost!["post_title"] as? String ?? "error"

        let newPostTime = snapshot.value as? NSDictionary
        let post_time:String = newPostTime!["post_time"] as? String ?? "error"

        let newPostUser = snapshot.value as? NSDictionary
        let post_user:String = newPostUser!["post_user"] as? String ?? "Team"

        self.posts.insert(post_title, at: 0)
        self.timeRef.insert(post_time, at: 0)
        self.userRef.insert(post_user, at: 0)

        self.newsfeedTableView.reloadData()
    })
}

(Скажите, если вам нужно больше кода)

1 Ответ

0 голосов
/ 07 декабря 2018

Я не знаком с firebase, но в нем может быть что-то встроенное, что может помочь вам в этой задаче, поскольку это обычная задача.

В любом случае, вот как вы можете сделать это с помощью вашего метода:

let isoFormatter = ISO8601DateFormatter()

// dateStrings will be fetched from your database
let dateStrings = [
    "2018-12-07T09:21:42Z",
    "2018-12-07T09:19:42Z",
    "2018-12-07T09:20:42Z"
]

// here we're converting the strings to an actual Date types
let dates = dateStrings.compactMap { isoFormatter.date(from: $0) }

// sorting in descending order
let sortedDates = dates.sorted { $0 > $1 }

print(sortedDates)
/*
 prints-

 [
    2018-12-07 09:21:42 +0000,
    2018-12-07 09:20:42 +0000,
    2018-12-07 09:19:42 +0000
 ]
 */

Вы можете использовать isoFormatter.string(from: Date) для загрузки даты в вашу базу данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...