我有多个排序的数组,每个数组都有一个特定的类型。我需要将这些排序的数组合并在一起,以生成Any类型的排序数组。即使对象不同,每个对象都有一个我想要用于排序的公共属性date: Date
。
不幸的是,我不能将原始对象子类化,因为我使用的是Realm(必须从Object
继承),这意味着我不能拥有任何继承。
您如何改变类以合并和排序数组?我不确定如何以一种非hacky的方式比较对象。非常愿意修改类(只要符合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
答案 0 :(得分:2)
我建议你使用协议,你可以从这样的东西开始:
protocol DateProtocol {
var date: Date? { get set }
}
然后使两个类符合DateProtocol
协议。
之后,您可以将您的课程视为 DateProtocol 并访问其日期属性。
您可以这样做:
var mergedArray: [DateProtocol] = example1Array as! [DateProtocol] + example2Array as! [DateProtocol]
mergedArray.sorted({ $0.date > $1.date })
祝你好运!
答案 1 :(得分:0)
这样的东西?我没有领域,但希望Object允许您为Custom对象创建动态var。
protocol Custom {
var date: Date? { get set }
}
class CustomObject: Custom {
var data : Any?
var date: Date?
init (d : Any) {
data = d
}
}
let co : CustomObject = CustomObject(d: "Meow")
let co2 : CustomObject = CustomObject(d: 2)
// This should be Object, not NSObject, but I don't have Realm installed.
class RealmObj : NSObject {
var obj : CustomObject? // Make dynamic in your code.
}
let ro = RealmObj()
ro.obj = co2