我想对下面的一个对象数组进行排序是我的函数来排序对象数组
class func Fn_SortByParameter(arrayToSort:NSMutableArray,paramName:NSString!, isAscending:Bool!){
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: paramName, ascending: isAscending, selector: Selector("localizedCompare:"))
var sortDescriptors:NSArray = NSArray(object: sortDescriptor)
var sortedArray:NSArray = arrayToSort.sortedArrayUsingDescriptors(sortDescriptors)
arrayToSort.removeAllObjects()
arrayToSort.addObjectsFromArray(sortedArray)
}
和
class func Fn_SortByParameter(arrayToSort:NSMutableArray,paramName:NSString!, isAscending:Bool!){
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: paramName, ascending: isAscending)
var sortDescriptors:NSArray = NSArray(object: sortDescriptor)
var sortedArray:NSArray = arrayToSort.sortedArrayUsingDescriptors(sortDescriptors)
arrayToSort.removeAllObjects()
arrayToSort.addObjectsFromArray(sortedArray)
}
数组包含以下类
的对象class Appointment: NSObject {
var id:Double!
var status:NSString!
var clinic:Clinic!
var medicalCase:MedicalCase!
var patient:Patient!
var appointmentDate:Double! // Unix timestamp
var reasonForVisit:NSString!
var cancellationReason:NSString!
var visit:Visit!
}
当我尝试排序时,它会因以下错误而崩溃
[valueForUndefinedKey:]:此类不是键约会日期的键值编码兼容。'
调用函数调用
Fn_SortByParameter(allAppointments.aaData, paramName: "appointmentDate", isAscending: true)
答案 0 :(得分:14)
您遇到的问题是像Double!
这样的可选值类型不会暴露给objective-c运行时,也不能用于键值编码。
您可以将其设为非可选:var appointmentDate:Double
,使用NSNumber对象:var appointmentDate:NSNumber!
,或使用Swift数组和内置sorted
函数。
答案 1 :(得分:0)
这种莫名其妙的异常通常是不洁的xib或Storyboard文件的结果。在xcode中打开xib或Storyboard,选择File&#39的所有者,然后单击" Connection Inspector" (右上箭头),立即查看所有商店。寻找!表示缺少插座。
详细
1)转到类xib文件或其故事板
2)右键单击UITableView,删除所有早期绑定
3)通过提供IBOutlet,委托和数据源添加新绑定。
4)清理项目并再次运行。