gpt4 book ai didi

swift - 无法对 Swift 数组进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:47 24 4
gpt4 key购买 nike

我正在尝试按严重性对我的contacts 数组进行排序

    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 }
}

将关系声明为原生 Swift 集 Set<Contact> 会更高效属性为 Int , 这避免了调用 allObjects和类型转换。并申报contacts作为非可选的空数组。

var contacts = [Contact]()
if let customer = CoreDataAccess.sharedInstance.getSavedCustomer() {
self.contacts = customer.contacts.sorted { $0.severity < $1.severity }
}

关于swift - 无法对 Swift 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31769724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com