0

我在我的 Swift 3.0 代码中添加了一个 Objective-C 类别。它有一个带有标题的方法:

+(UIBezierPath *)interpolateCGPointsWithHermite:(NSArray *)pointsAsNSValues closed:(BOOL)closed;

当我从我的 Swift 代码中调用它时:

antiAliasing = dict.value(forKey: "antAliasing") as! NSArray
UIBezierPath.interpolateCGPoints(withHermite: antiAliasing, closed: true)

我得到了错误:

无法将“NSArray”类型的值转换为预期的参数类型“[Any]!”

那有什么问题?

4

1 回答 1

4
  1. 正如@vadian 建议的那样,将 NSArray 替换为 [NSValue]
  2. 使用可选转换as?,因为它更可靠,并且如果转换失败,您不会崩溃。
  3. 使用下标代替valueForKey方法。

这是代码:

if let antiAliasing = dict["antAliasing"] as? [NSValue] {
    UIBezierPath.interpolateCGPoints(withHermite: antiAliasing, closed: true)
}
于 2017-02-23T12:13:39.147 回答