В Swift вы используете ==
для сравнения, если NSIndexPaths одинаковы.
import UIKit
var indexPath1 = NSIndexPath(forRow: 1, inSection: 0)
var indexPath2 = NSIndexPath(forRow: 1, inSection: 0)
var indexPath3 = NSIndexPath(forRow: 2, inSection: 0)
var indexPath4 = indexPath1
println(indexPath1 == indexPath2) // prints "true"
println(indexPath1 == indexPath3) // prints "false"
println(indexPath1 == indexPath4) // prints "true"
println(indexPath1 === indexPath2) // prints "true"
println(indexPath1 === indexPath3) // prints "false"
println(indexPath1 === indexPath4) // prints "true"
Swift использует ==
для сравнения значений.===
используется для определения, когда две переменные ссылаются на один и тот же экземпляр (местоположение в памяти и т. Д.).Интересно, что indexPath1 === indexPath2
показывает, что NSIndexPath создается для совместного использования одного и того же экземпляра всякий раз, когда значения (строка раздела) совпадают, поэтому даже если вы сравниваете экземпляры, он все равно будет действительным.
Этот ответ принят почти полностьюс этот фантастический SO-ответ от drewag и воспроизведенный здесь, поскольку это первый результат Google для «сравнения indexpath», и мы не должны просто вставлять ссылку.