gpt4 book ai didi

arrays - 比较具有共享属性的不同类型的对象

转载 作者:行者123 更新时间:2023-11-28 12:20:22 25 4
gpt4 key购买 nike

我有多个排序数组,每个数组都有特定类型。我需要将这些已排序的数组合并在一起以创建 Any 类型的已排序数组。尽管对象不同,但每个对象都有一个公共(public)属性 date: Date,我想将其用于排序。

不幸的是,我不能对原始对象进行子类化,因为我正在使用 Realm(必须从 Object 进行子类化),这意味着我不能有任何继承。

您将如何更改类以合并和排序数组?我不确定如何以一种不老套的方式比较对象。非常愿意修改类(只要符合 Realm 的要求:https://realm.io/docs/swift/latest/

示例代码:

    import RealmSwift

class Example1: Object {
dynamic var text: String = ""
dynamic var date: Date?

}

class Example2: Object {
dynamic var num: Int = 0
dynamic var date: Date?
}

// there would be a sorted array of type Example1 and a sorted array of type Example2
// I would need to merge these two arrays and sort them based on the date property

最佳答案

我建议你使用协议(protocol),你可以从这样的事情开始:

protocol DateProtocol {
var date: Date? { get set }
}

然后使这两个类都符合DateProtocol 协议(protocol)。

之后,您可以将您的类视为DateProtocol 并访问它们的日期属性。

你可以这样做:

var mergedArray: [DateProtocol] = example1Array as! [DateProtocol] + example2Array as! [DateProtocol]
mergedArray.sorted({ $0.date > $1.date })

祝你好运!

关于arrays - 比较具有共享属性的不同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45067422/

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