[英]Sort array of structs by a member of each
我正在使用以下结构编译数据:
struct Nursing {
var leftTime: Double
var rightTime: Double
var submissionTime: Date
}
struct Bottle {
var bottleQuantity: Double
var bottleUnits: String
var submissionTime: Date
}
struct Puree {
var pureeQuantity: Double
var pureeType: String
var pureeUnits: String
var submissionTime: Date
}
然后,我使用应用程序其他位置的数据创建每种类型的数组。
var nursingArray = [Nursing]()
var bottleArray = [Bottle]()
var pureeArray = [Puree]()
然后,我仅对最后一天发生的条目过滤每个数组。
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())
var todayBottleArray = bottleArray.filter( { ( $0.submissionTime > yesterday! ) } )
var todayNursingArray = nursingArray.filter( { ( $0.submissionTime > yesterday! ) } )
var todayPureeArray = pureeArray.filter( { ( $0.submissionTime > yesterday! ) } )
最后,它们全部合并为一个未排序的数组。
var unsortedTodayArray: [Any] = []
unsortedTodayArray.append(todayBottleArray)
unsortedTodayArray.append(todayNursingArray)
unsortedTodayArray.append(todayPureeArray)
这是一个问题...虽然我知道它们是不相关的,但是submissionTime
属性出现在所有三个中。 我如何排序unsortedTodayArray
通过submissionTime
?
您可以使您的结构符合相同的协议。 就像是...
protocol SubmissionTimeable {
var submissionTime: Date { get set }
}
struct Nursing: SubmissionTimeable {
var leftTime: Double
var rightTime: Double
var submissionTime: Date
}
struct Bottle: SubmissionTimeable {
var bottleQuantity: Double
var bottleUnits: String
var submissionTime: Date
}
struct Puree: SubmissionTimeable {
var pureeQuantity: Double
var pureeType: String
var pureeUnits: String
var submissionTime: Date
}
然后,让您未排序的数组成为协议的数组。
let unsortedArray = [SubmissionTimeable]()
然后,您可以使用SubmittingTime对该数组进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.