valueForUndefinedKey: 这个类不支持关键值编码的 appointmentDate 键。- Swift

3
我想对一个对象数组进行排序,以下是我用于对对象数组进行排序的函数。
    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)
}

AND

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:]:该类不符合键值编码要求,无法使用appointmentDate关键字。

调用排序函数

Fn_SortByParameter(allAppointments.aaData, paramName: "appointmentDate", isAscending: true)
2个回答

16
你遇到的问题是可选值类型,比如 Double! 不会在 objective-c 运行时暴露,也不能用于键值编码。
你可以将其变为非可选类型:var appointmentDate:Double,使用 NSNumber 对象:var appointmentDate:NSNumber!,或者使用 Swift 数组和内置的 sorted 函数。

0

这种难以解释的异常通常是由于不干净的xib或Storyboard文件引起的。在Xcode中打开xib或Storyboard文件,选择File's Owner并点击"Connection Inspector"(右上角箭头),可以一次查看所有outlets。寻找表示缺失outlet的!符号。

详细步骤如下:

1)进入类的xib文件,如果是在Storyboard中则跳过此步骤。

2)右键点击UITableView,移除之前的所有绑定。

3)通过提供IBOutlet、delegate和datasource添加新的绑定。

4)清理项目并重新运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接