我正在尝试使用以下代码获取数组或JSON数据并按日期对数组中的值进行分组:
func groupTrips (trips: JSON) -> [[Trip?]] {
let calendar = NSCalendar.currentCalendar()
var groupedTrips:[[Trip?]] = []
var group: [Trip] = []
for (index, tripRaw):(String, JSON) in trips {
let trip = Trip(trip: tripRaw)
if index == "0" && calendar.compareDate(trip.pickup, toDate: NSDate.init(), toUnitGranularity: .Day) != .OrderedSame {
groupedTrips.append([nil])
}
if let lastTrip = group.last {
let order = calendar.compareDate(trip.pickup, toDate: lastTrip.pickup, toUnitGranularity: .Day)
if order == .OrderedSame {
group.append(trip)
} else {
groupedTrips.append(group)
group = [trip]
}
} else {
group.append(trip)
}
}
groupedTrips.append(group)
return groupedTrips
}
当我尝试运行代码时,我在第3行到最后一行groupedTrips.append(group)
收到错误:Thead 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
在我的控制台中,我得到fatal error: array cannot be bridged from Objective-C
。我的Trip类只是一个简单的Swift类,它将JSON元素解析为对象。
答案 0 :(得分:1)
你应该看看Comparable。在Trip引用中实现它将允许您使用sort()函数。除此之外,我建议消化Swift's functional aspects。我认为您的代码可以被清理和简化。
答案 1 :(得分:1)
我真的不知道这是解决问题的最佳方法,但通常我会将类更改为结构。除非您扩展/实现某些内容,并且如果您不介意它是值类型而不是引用类型,否则可以正常工作。