gpt4 book ai didi

swift - nil 不能转换为 hashable。

转载 作者:行者123 更新时间:2023-11-30 10:15:40 26 4
gpt4 key购买 nike

我有一个自定义控件,它使用数据源来获取项目(就像 NSTableView 所做的那样)。数据源可以返回任何类型,只要它是可哈希的。这些项目用作私有(private)字典中的键。

控件(自定义 View )已添加到界面生成器中的 UI。

当我使用 nil 参数查询数据源时遇到问题,因为 nil 不能转换为 hashable。

执行此操作的正确方法是什么?

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)
{}

}

最佳答案

使用 NSNull() 获取一个 null 对象,然后您可以将其与另一个 NSNull() 进行比较,看看它是否为空。

关于swift - nil 不能转换为 hashable。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com