Невозможно преобразовать значение типа '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 ответ
Решение
- Замените NSArray на [NSValue], как предложено @vadian.
- Используйте необязательное преобразование
as?
, так как это более надежно, и вы не получите сбой, если преобразование не удастся. - Используйте индекс вместо
valueForKey
метод.
Вот код:
if let antiAliasing = dict["antAliasing"] as? [NSValue] {
UIBezierPath.interpolateCGPoints(withHermite: antiAliasing, closed: true)
}