【发布时间】:2014-09-19 18:12:27
【问题描述】:
我有一个核心数据对象 (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
}
但是当我在我的测试目标中尝试完全相同的事情时
致命错误:NSArray 元素无法匹配 Swift Array 元素 输入
我已尝试转换值,但似乎无法使其正常工作。任何想法为什么它在主要目标而不是测试目标中有效?
编辑
好吧,进一步分解,当我尝试从数组中取出一个项目时,这个问题特别发生。
var orderedList: [OrderWaypoint] = order.getOrderedWaypoints()
for var i = 0; i < orderedList.count; i++ {
var waypoint = orderedList[i]
// do something
}
【问题讨论】:
-
创建 NSArray 并将其传递给 Swift 代码的代码在哪里?
-
我用方法定义更新了原始帖子。 order.waypoints 是 Core Data 中的 NSSet。我应用一个排序描述符来获取一个 NSArray 并向下转换为 [OrderWaypoint]。
-
你有没有得到这个工作?我处于类似的情况 - 以一种应该工作的方式使用 Core Data 子类,但我遇到了这个问题。
-
也有同样的问题。让这个工作顺利吗???
-
当时我没有找到修复它的方法,而是改用 NSArray。我宁愿不这样做,但我没有时间回顾它。很抱歉下面的格式不好,但这是我们目前使用的。
func getOrderedWaypoints() -> NSArray { let nameDescriptor = NSSortDescriptor(key: "stop_number", ascending: true) let sorted = self.waypoints.sortedArrayUsingDescriptors([nameDescriptor]) return sorted }