无法对Swift数组进行排序

我正在尝试按严重程度对联系人数组进行排序

    var contacts: [Contact]?   

    if let customer = CoreDataAccess.sharedInstance.getSavedCustomer() {
       //Cast from NSSet to [Contact]        
       self.contacts = customer.contacts.allObjects as? [Contact]
       self.contacts!.sort({$0.severity < $1.severity}) //error
    }

编译器在标记的行中出错,并显示以下消息:

Cannot invoke 'sort' with an argument list of type '((_, _) -> _)'

我不确定我做错了什么,因为同样的事情在另一个文件中有效.如果它有助于解释,上面的代码在WatchKit界面上运行时会崩溃,但在iOS中使用时则不会崩溃.

编辑:严重性是NSNumber

最佳答案 尝试将第一个参数显式转换为NSNumber并使用compare:方法(我在Playground中测试它)

var contacts: [Contact]?
if let customer = CoreDataAccess.sharedInstance.getSavedCustomer() {
  //Cast from NSSet to [Contact]
  self.contacts = customer.contacts.allObjects as? [Contact]
  self.contacts!.sort { ($0.severity as NSNumber).compare($1.severity) == .OrderedAscending }
}

如果可能,考虑使用Int而不是NSNumber

点赞