如何从对象数组中获取最大日期(未来)swift

How to get max date (Future) from an object array swift

这是我的对象,我要在这里得到最高的expiresDate

struct LatestReceiptInfo {
    var productId: String?
    var expiresDate: Date? = nil
    var isInIntroOffer_period: Bool?
    var isTrialPeriod: Bool?
    var cancellationDate: Date? = nil
}

latestReceiptInfoArray 是我的数组。

for latestReceiptInfo in latestReceiptInfoArray {
    //2. Get the highest expire_date from latestInfoReceiptObjects array
    if let exDate = latestReceiptInfo.expiresDate {

    }
}

如果您只查找日期,而不是 LatestReceiptInfo 最高日期,那么您可以 compactMap 日期(取出 nil-values) 然后用max函数得到最高的那个。

let highestDate = latestReceiptInfoArray
    .compactMap { [=10=].expiresDate }
    .max()

如果你想获得日期最长的LatestReceiptInfo,有多种方法可以实现。例如,通过过滤所有实际具有日期的值。之后你可以 force-unwrap (yugh) 比较中的日期。

let highestReceiptInfo = latestReceiptInfoArray
    .filter { [=11=].expiresDate != nil }
    .max { [=11=].expiresDate! < .expiresDate! }