Je reçois cette erreur et je suis nouveau à Swift. Je veux prendre les 5 derniers points d'un tableau> = 5 et passer ces 5 points en tant qu'argument de tableau à une fonction. Comment puis-je atteindre cet objectif et surmonter cette erreur?
Impossible de convertir la valeur de type 'ArraySlice' en type d'argument attendu '[CGPoint]'
if (self.points?.count >= 5) {
let lastFivePoints = self.points![(self.points!.count-5)..<self.points!.count]
let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
Vous devez convertir ArraySlice
en Array
en utilisant la méthode Array(Slice<Type>)
if (self.points?.count >= 5) {
let lastFivePoints = Array(self.points![(self.points!.count-5)..<self.points!.count])
let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
Au lieu de l'opérateur de plage, vous pouvez utiliser la méthode prefix (upTo end: Self.Index) qui renvoie ArraySlice, ce qui raccourcit votre code. Définition de la méthode: La méthode renvoie une sous-séquence à partir du début de la collection jusqu'à la position spécifiée (index), sans l'inclure.
if (self.points?.count >= 5) {
let lastFivePoints = Array<CGPoint>(self.points?.prefix(upTo:5)) as [AnyObject]
let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
// You can also do this
let lastFivePoints = Array<CGPoint>(self.points?[0...4])