gpt4 book ai didi

ios - NSArray 元素无法匹配 Swift 数组元素类型

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:00 25 4
gpt4 key购买 nike

我有一个核心数据对象 (Order),它有一个方法可以返回另一个核心数据对象 (OrderWaypoint) 的数组。

func getOrderedWaypoints() -> [OrderWaypoint] {
let nameDescriptor = NSSortDescriptor(key: "stop_number", ascending: true)
let sorted: [OrderWaypoint] = self.waypoints.sortedArrayUsingDescriptors([nameDescriptor]) as [OrderWaypoint]
return sorted
}

使用以下循环时,主目标中的一切都按预期工作

for waypoint in order.getOrderedWaypoints() {
// do something
}

但是当我在我的测试目标中尝试完全相同的东西时

fatal error: NSArray element failed to match the Swift Array Element type

我试过强制转换值,但似乎无法正常工作。知道为什么它在主要目标而不是测试目标中有效吗?

编辑

好吧,进一步分解,当我试图从数组中取出一个项目时,这个问题就特别发生了。

var orderedList: [OrderWaypoint] = order.getOrderedWaypoints()

for var i = 0; i < orderedList.count; i++ {
var waypoint = orderedList[i]
// do something
}

最佳答案

您不能进行类型转换,因为 sortedArrayUsingDescriptors 会返回一个 NSArray,您需要将该数组中的所有元素复制到 Swift Typed 数组中。

func getOrderedWaypoints() -> [OrderWaypoint] {
let nameDescriptor = NSSortDescriptor(key: "stop_number", ascending: true)
let sorted = [OrderWaypoint]()
for elem in self.waypoints.sortedArrayUsingDescriptors([nameDescriptor]) {
sorted.append(elem)
}
return sorted
}

关于ios - NSArray 元素无法匹配 Swift 数组元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com