【问题标题】:Sort array of structs by a member of each按每个结构的成员对结构数组进行排序
【发布时间】:2017-08-16 01:05:50
【问题描述】:

我正在使用以下结构编译数据:

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 属性出现在所有三个中。如何按submissionTimeunsortedTodayArray 进行排序?

【问题讨论】:

    标签: arrays swift sorting struct


    【解决方案1】:

    您可以让您的结构符合相同的协议。比如……

    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]()
    

    然后您可以使用 submitTime 对该数组进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-08
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多