データソースを使用して項目をフェッチするカスタム コントロールがあります (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)
{}
}