当前位置: 首页 > 知识库问答 >
问题:

Swift错误:无法将“ArraySlice”类型的值转换为预期的参数类型

鞠征
2023-03-14

我收到此错误,并且是 Swift 的新手。我想取数组的最后 5 个点

无法将“ArraySlice”类型的值转换为预期的参数类型“[CGPoint]”

if (self.points?.count >= 5) {
    let lastFivePoints = self.points![(self.points!.count-5)..<self.points!.count]
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}

共有3个答案

蓬英逸
2023-03-14

我尝试使用数组(最后五点),但我得到错误

表达式的类型在没有更多上下文的情况下是模棱两可的

我最终做了:

let arr = lastFivePoints.map({ (x) -> T in
                            return x
                        })

其中T是这个例子的内容类CGPoint

姜学海
2023-03-14

您可以使用前缀(upTo end: Self)来代替范围运算符。Index)方法,该方法返回数组切片,从而使代码更短。方法的定义:该方法返回一个子序列,从集合的开始处一直到(但不包括)指定的位置(索引)。

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]) 
萧光华
2023-03-14

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

if (self.points?.count >= 5) {
    let lastFivePoints = Array(self.points![(self.points!.count-5)..<self.points!.count])
    let angle = VectorCalculator.angleWithArrayOfPoints(lastFivePoints)
}
 类似资料:
  • 在总体方案中,我试图比较用户从tableview中的多个选择,并将它们与我的解析数据库进行比较。所以我的问题是两倍1。我当前的代码是正确的方式吗?和2。如何将值类型Bool转换为参数类型pfobject? 无法将类型“()->bool”的值转换为预期的参数类型“pfobject” 让imagesQuery=PFQuery(classname:“CollegeImages”)imagesQuery.

  • 我正在尝试根据我在线找到的教程创建NSURLSession任务(https://www.raywenderlich.com/85528/user-accounts-ios-ruby-rails-swift#next_section),并且我收到以下错误: 无法转换类型为(NSData!,NSURLResponse!,NSError!) - 在这段代码中: 问题所属的职能部门可在此处找到 完整的代码

  • 我不知道如何将类型的值转换为预期的参数类型,用于在以下代码中: 如何为编写

  • 我正在保存所有数据,代码写在单独的类中。它显示了一个错误,即无法将类型为“Int”的值转换为预期的参数类型“字符串”。请帮我解决这个问题。 以下是我保存所有数据的类: 这是ViewController.swift文件: 遇到错误: 无法将“Int”类型的值转换为预期的参数类型“String”

  • 我是斯威夫特的新人,现在尽我所能地学习这个。我写了得到参数的函数:数字和函数,它们与这个数字一起工作: 但是编译给出错误。当我试图改变论点时,比如

  • 问题内容: 我通过以下方式添加: 现在,我在中的关键字上收到以下错误消息: 我在所有其他功能中都使用了该功能,但从未遇到此错误 问题答案: 更改为。 我不确定编译器到底在想什么(或者它的疯狂错误消息来自何处),但是我的猜测是: 在Swift中,必须先初始化变量,然后才能使用。造成这种情况的一个原因是,编译器无法验证不会尝试调用其获得的所有内容,或执行其他操作,例如访问将在之后初始化的其他变量,这取