如何比较2个数组并将最后一项附加到第二个数组iOS Swift 3

时间:2017-02-28 06:54:55

标签: ios arrays xcode swift3 items

让我说我有一个 firstArray 的PFObject [](来自Parse SDK),它有7个项目,我在firstArray中创建了一个secondArray:

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(),我只想像WhatsApp那样将最后3行添加到我的TableView中,例如,否则TableView将滚动到顶部。

谢谢!

4 个答案:

答案 0 :(得分:2)

首先将数据附加到第二个数组

secondArray.append(firstArray [指数])

然后

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

self.yourTableView.insertRowsAtIndexPaths(insertedIndexPaths, withRowAnimation: .Fade)
self.yourTableView.endUpdates()

答案 1 :(得分:1)

如果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
}

答案 2 :(得分:1)

由于你要求一种方法来附加它,这应该可行。

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

希望这有帮助!

答案 3 :(得分:0)

如果您希望更新表视图而不重新加载它,则必须使用 func insertRows(在indexPaths:[IndexPath],带动画:UITableViewRowAnimation) 您应该查看此文档以更好地理解如何实现您的任务: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html