【发布时间】:2020-06-24 17:16:44
【问题描述】:
我有一个一对多的核心数据对象图关系,其中一个帐户可以有许多日志(帐户>日志)。我的目标是根据子对象的值(我的日志中的日期)对我从获取请求中获得的帐户数组进行排序
extension Account {
@NSManaged public var account_id: String?
@NSManaged public var logs: NSSet?
}
extension SalesLogs {
@NSManaged public var created_date: String?
@NSManaged public var is_modified: Bool
}
我的尝试如下。我想比较每个 Account 的 last created_date,并返回一个排序后的 Accounts 数组
let fetchData : [Accounts]= try StorageManager.shared.fetchData(entity: "SalesLogs", model: SalesLogs.self)
let sorted array:[Accounts] = fetchData.filter{($0.logs?.allObjects as! [SalesLogs]).map {$0.created_date ?? "" > }.last == [true]}
【问题讨论】:
-
集合是无序的
-
是的,但你可以将所有对象投射到 NSSet 中
-
您可能正在寻找
.sort或.sorted方法;不是.filter -
@NewDev 你能写代码sn-p吗?我卡住了
-
要对数组进行排序,您可以使用
.sort就地排序,或者使用.sorted返回一个排序后的数组,如下所示:let sorted = [3,4,1,0].sorted(by: { $0 > $1 }),它将从高到低排序。在您的情况下,您需要弄清楚您希望如何找到每个帐户的日志,以便与另一个帐户进行比较