Как сравнить 2 массива и добавить последние элементы во второй массив iOS Swift 3

Скажем, у меня есть firstArray PFObject [] (из Parse SDK), и в нем 7 элементов, я делаю secondArray из firstArray:

secondArray = firstArray

затем я вызываю запрос к базе данных для получения обновленных данных, теперь в firstArray их 10 элементов.

Я делаю примерно так:

if firstArray.count > secondArray.count {
      let lastItems = firstArray.count - secondArray.count
     // lastItems = 3
}

Как мне добавить эти 3 последних элемента в конец secondArray в их определенном порядке?

secondArray добавить элемент 8

secondArray добавить элемент 9

secondArray добавить элемент 10

Я не хочу reloadData (), я просто хочу добавить последние 3 строки в свой TableView, как, например, WhatsApp, иначе TableView будет прокручиваться вверх.

Спасибо!


person Frank Eno    schedule 28.02.2017    source источник
comment
Если вы просто не хотите прокручивать вверх, один из способов - программно прокручивать вниз сразу после reloadData (), например с помощью этого stackoverflow.com/questions/952412/   -  person aunnnn    schedule 28.02.2017


Ответы (4)


Поскольку вы запрашиваете способ его добавления, это должно сработать.

if firstArray.count > secondArray.count {
    for i in secondArray.count..<firstArray.count {
        secondArray.append(firstArray[i])
    }
}

Надеюсь это поможет!

person GerardoMR    schedule 28.02.2017

Сначала добавьте данные во второй массив

secondArray.append (firstArray [индекс])

потом

self.yourTableView.beginUpdates()
var insertedIndexPaths = [indexpath_where_you_want_insertData]

self.yourTableView.insertRowsAtIndexPaths(insertedIndexPaths, withRowAnimation: .Fade)
self.yourTableView.endUpdates()
person Punit    schedule 28.02.2017

если firstArray и secondArray одинаковы, вы можете просто сделать

secondArray = firstArray

и если вы обновили secondArray и хотите добавить только новые данные

var counter = 0
while secondArray.count != firstArrayCount {
    secondArray.append(firstArray[firstArray.count+counter])
    counter += 1
    //insert new row in table
}
person rv7284    schedule 28.02.2017
comment
Да, извините, я неправильно выразил свой вопрос, тогда мне нужно обновить свой источник данных TableView без перезагрузки всех данных, добавив только последние 3 строки в конец таблицы, как это делает, например, WhatsApp, я вызываю tableView. reloadData () обновляет весь TableView и прокручивает его вверх - person Frank Eno; 28.02.2017

Если вы хотите обновить представление таблицы, не перезагружая его, вам придется использовать func insertRows (в indexPaths: [IndexPath], с анимацией: UITableViewRowAnimation). Чтобы лучше понять, как реализовать вашу задачу, вам следует взглянуть на этот документ: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html

person Eugene Svaro    schedule 28.02.2017
comment
Да, я знаю, как добавлять строки в tableView, мне просто нужен код для добавления последних элементов в мой secondArray, как и ответ ниже этого;) - person Frank Eno; 28.02.2017