[valueForUndefinedKey:]:此类不是键约会日期的键值编码兼容。 - 迅速

时间:2015-04-23 05:51:55

标签: ios swift sorting

我想对下面的一个对象数组进行排序是我的函数来排序对象数组

    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)

2 个答案:

答案 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)清理项目并再次运行。

相关问题