我正在尝试按严重程度对联系人数组进行排序
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