0

データソースを使用して項目をフェッチするカスタム コントロールがあります (NSTableView のように)。データソースは、ハッシュ可能である限り、任意の型を返すことができます。アイテムは、プライベート ディクショナリのキーとして使用されます。

インターフェイス ビルダーの UI にコントロール (カスタム ビュー) が追加されます。

nil はハッシュ可能に変換できないため、nil パラメータを使用してデータソースをクエリすると問題が発生します。

これを行う適切な方法は何ですか?

protocol DataSourceProtocol
{
  func numberOfChildrenOfItem<Item: Hashable>(item: Item?) -> Int
  func child<Item: Hashable>(index: Int, ofItem item: Item?) -> Item
}

class MyControl : NSControl
{
  var dataSource : DataSourceProtocol!

  func reloadData()
  {
    //using string as an example of a hashable 
    let countA = dataSource.numberOfChildrenOfItem("item")  // ok
    let countB = dataSource.numberOfChildrenOfItem(nil)     // not ok

    let childA = dataSource.child(0, ofItem: "item") //ok
    let childB = dataSource.child(0, ofItem: nil) //not ok
    self.reloadChildren(childA)
    self.reloadChildren(childB)
  }

  func reloadChildren<Item: Hashable>(item: Item)
  {}

}

4

1 に答える 1

1

NSNull()null オブジェクトを取得するために使用します。これを別のオブジェクトと比較しNSNull()て、空かどうかを確認できます。

于 2015-05-09T12:11:11.170 に答える