首页 > 解决方案 > 调用实例方法“附加”时没有完全匹配

问题描述

我正在为 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
  }

标签: arraysswift

解决方案


Any不符合Hashable因此[AnyHashable: Any](变量 resultPoint)不能用 表示AnyHashable

但是为什么 resultPoint 的价值Any呢?很明显NSNumber。如果您声明 resultPoint

var resultPoint: [AnyHashable: NSNumber] = [:]

然后代码编译。

为什么返回类型是可选的?result是 - 也很明显 - 非可选的


推荐阅读