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オブジェクトの==
演算子は動作するため、インスタンスではなくセクションと行のプロパティを比較していると想定しています。
Swiftでは、NSIndexPath
またはIndexPath
を使用できます。どちらも比較するための同じ戦略を持っています。
NSIndexPath
Apple Documentation、 NSIndexPath
に準拠 Equatable
プロトコル。したがって、使用できるのは==
または!=
演算子を使用して、NSIndexPath
の2つのインスタンスを比較します。
IndexPath
Appleのドキュメントには、NSIndexPath
およびIndexPath
に関する記述があります。
FoundationフレームワークへのSwiftオーバーレイ)は、
IndexPath
クラスにブリッジするNSIndexPath
構造を提供します。
これは、Swift 3およびXcode 8で始まる)NSIndexPath
の代替として、 IndexPath
を使用できることを意味します。 IndexPath
もEquatable
プロトコルに準拠しているため、==
または!=
演算子を使用して、2つのインスタンスを比較します。