首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift错误:无法将'ArraySlice‘类型的值转换为所需的参数类型

Swift错误:无法将'ArraySlice‘类型的值转换为所需的参数类型
EN

Stack Overflow用户
提问于 2016-01-27 12:15:12
回答 3查看 19.3K关注 0票数 35

我收到了这个错误,并且是Swift的新手。我想获取数组>= 5的最后5个点,并将这5个点作为数组参数传递给函数。我如何才能做到这一点并克服这个错误?

无法将'ArraySlice‘类型的值转换为所需的参数类型'CGPoint’

代码语言:javascript
复制
if (self.points?.count >= 5) {
    let lastFivePoints = self.points![(self.points!.count-5)..<self.points!.count]
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-27 12:26:53

您需要使用Array(Slice<Type>)方法将ArraySlice转换为Array

代码语言:javascript
复制
if (self.points?.count >= 5) {
    let lastFivePoints = Array(self.points![(self.points!.count-5)..<self.points!.count])
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
票数 43
EN

Stack Overflow用户

发布于 2017-07-12 02:49:00

您可以使用返回ArraySlice的前缀(upTo end: Self.Index)方法代替范围操作符,这会使代码更短。方法的定义:该方法返回从集合开始到(但不包括)指定位置(索引)的子序列。

代码语言:javascript
复制
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]) 
票数 4
EN

Stack Overflow用户

发布于 2018-01-22 19:45:37

我尝试使用Array(lastFivePoints),但遇到错误

表达式的

类型在没有更多上下文的情况下不明确

我最终做了:

代码语言:javascript
复制
let arr = lastFivePoints.map({ (x) -> T in
                            return x
                        })

其中T是本例中的内容类CGPoint

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35028784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档