Невозможно преобразовать значение типа 'NSArray' в ожидаемый тип аргумента '[Any]!'

Я добавил категорию Objective-C в мой код Swift 3.0. У него есть метод с заголовком:

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

Когда я звоню из моего кода Swift:

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

Я получил ошибку:

Невозможно преобразовать значение типа 'NSArray' в ожидаемый тип аргумента '[Any]!'

В чем проблема с этим?

1 ответ

Решение
  1. Замените NSArray на [NSValue], как предложено @vadian.
  2. Используйте необязательное преобразование as?, так как это более надежно, и вы не получите сбой, если преобразование не удастся.
  3. Используйте индекс вместо valueForKey метод.

Вот код:

if let antiAliasing = dict["antAliasing"] as? [NSValue] {
    UIBezierPath.interpolateCGPoints(withHermite: antiAliasing, closed: true)
}
Другие вопросы по тегам