web-dev-qa-db-ja.com

NSIndexPathの比較Swift

UITableViewに対してNSIndexPath定数が宣言されている場合、==演算子を使用して比較することは有効ですか?

これは私の定数宣言です:

let DepartureDatePickerIndexPath = NSIndexPath(forRow: 2, inSection: 0)

そして、私の機能:

 override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
    var height: CGFloat = 45

    if indexPath == DepartureDatePickerIndexPath{
        height = departureDatePickerShowing ? 162 : 0
    } else if indexPath == ArrivalDatePickerIndexPath {
        height = arrivalDatePickerShowing ? 162 : 0
    }

    return height
}

これは確かに適切に動作しますが、実行しても安全ですか? NSIndexPathオブジェクトの==演算子は動作するため、インスタンスではなくセクションと行のプロパティを比較していると想定しています。

24
Shan

Swiftでは、NSIndexPathまたはIndexPathを使用できます。どちらも比較するための同じ戦略を持っています。


#1。 NSIndexPath

Apple Documentation、 NSIndexPath に準拠 Equatable プロトコル。したがって、使用できるのは==または!=演算子を使用して、NSIndexPathの2つのインスタンスを比較します。


#2。 IndexPath

Appleのドキュメントには、NSIndexPathおよびIndexPathに関する記述があります。

FoundationフレームワークへのSwiftオーバーレイ)は、IndexPathクラスにブリッジするNSIndexPath構造を提供します。

これは、Swift 3およびXcode 8で始まる)NSIndexPathの代替として、 IndexPath を使用できることを意味します。 IndexPathEquatableプロトコルに準拠しているため、==または!=演算子を使用して、2つのインスタンスを比較します。

0
Imanou Petit