arrays - 调用实例方法“附加”时没有完全匹配
问题描述
我正在为 React Native 创建原生模块。我正在尝试在 Swift 中处理数据,这是函数
func getCornerPoints(_ cornerPoints: [AnyHashable]?) -> [AnyHashable]? {
var result: [AnyHashable] = []
if cornerPoints == nil {
return result
}
for point in cornerPoints ?? [] {
guard let point = point as? NSValue else {
continue
}
var resultPoint: [AnyHashable: Any] = [:]
resultPoint["x"] = NSNumber(value: Float(point.cgPointValue.x))
resultPoint["y"] = NSNumber(value: Float(point.cgPointValue.y))
result.append(resultPoint) // error is here "No exact matches in call to instance method 'append'"
}
return result
}
解决方案
Any
不符合Hashable
因此[AnyHashable: Any]
(变量 resultPoint)不能用 表示AnyHashable
。
但是为什么 resultPoint 的价值Any
呢?很明显NSNumber
。如果您声明 resultPoint
var resultPoint: [AnyHashable: NSNumber] = [:]
然后代码编译。
为什么返回类型是可选的?result
是 - 也很明显 - 非可选的
推荐阅读
- python - 更新嵌入消息不起作用 - discord.py
- javascript - 在 puppeteer + Charles 中从本地主机更改为代理时得到 302
- android - Flag_secure 在 Scrcpy 程序中不起作用。除了 flag_secure 还有其他方法吗?
- php - 在 Laravel 中使用 Join 和 Group By 进行计数
- github-api - 如何从 github gist API 获取公共 gist 文件名
- css - CSS Grid - 将所有子元素保持在一行中且等距
- qt - 为隐藏的 QWidget 调用 show() 后移动 QLabel
- c# - 自动生成的网格视图中的 DatePicker
- html - 在 vue 的 v-data-table 的页脚中添加刷新按钮
- vb.net - 共享打印机的 System.IO.FileNotFoundException