如何在选择和取消选择单元格时仅保留Array中的不同元素?

时间:2015-12-17 06:23:04

标签: ios swift set

我有一个包含不同单元格的集合视图,我希望能够选择多个单元格。我能够这样做,但是当我单击已经选择的单元格时,同样的单元格将再次添加到数组中,从而导致重复。我想要发生的是当它被点击时它会将标签附加到数组,当它再次被点击它将从数组中删除它。以下是我到目前为止的情况。

func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
    arrayOfFriendsSelected.append(arrayOfFriendsNames[indexPath.item])
    print(arrayOfFriendsSelected)
    var cell = collection.cellForItemAtIndexPath(indexPath) as! ShareCell
    cell.friendimage.layer.borderWidth = 3.0
    cell.friendimage.layer.borderColor = UIColorFromRGB("4F26D8").CGColor

    return true
}   

func collectionView(collectionView: UICollectionView, shouldDeselectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
    var cell = collection.cellForItemAtIndexPath(indexPath) as! ShareCell
    arrayOfFriendsSelected.removeAtIndex(indexPath.item)
    print(arrayOfFriendsSelected)
    cell.friendimage.layer.borderWidth = 0.0

    return true
}

1 个答案:

答案 0 :(得分:1)

维护Set而不是Array

声明如

var setOfSelectedFriends = Set<String>()

并添加

setOfSelectedFriends.insert(arrayOfFriendsNames[indexPath.item])

要删除,请使用

setOfSelectedFriends.remove(<elementToRemove>)

您可以阅读有关Swift Sets NumPy ufuncs的更多信息。