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

Dat*_*kar 1 sorting ios swift

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

    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)
}
Run Code Online (Sandbox Code Playgroud)

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)
}
Run Code Online (Sandbox Code Playgroud)

数组包含以下类的对象

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!
    }
Run Code Online (Sandbox Code Playgroud)

当我试图排序它崩溃与下面的错误

[valueForUndefinedKey:]:此类不是键约会日期的键值编码兼容.

函数调用排序

Fn_SortByParameter(allAppointments.aaData, paramName: "appointmentDate", isAscending: true)
Run Code Online (Sandbox Code Playgroud)

Bri*_*kel 15

您遇到的问题是可选的值类型Double!不会暴露给objective-c运行时,也不能用于键值编码.

您可以将其设置为非可选:var appointmentDate:Double使用NSNumber对象:var appointmentDate:NSNumber!,或使用Swift数组和内置sorted函数.