使用带有一些可选值的SortInPlace(nil)

时间:2016-09-30 17:12:52

标签: ios swift sorting cocoa-touch

您好

我有一个包含结构的字典,我需要根据时间值(NSDate)进行排序。

大多数结构都没有时间值,因此它们的时间值(NSDate?)将为nil(可选)。

我尝试的函数在尝试nil值时会崩溃。 如何使这个函数对值进行排序,而不是在尝试比较nil时崩溃?

AllBooks.SharedInstanse.browseBooks.sortInPlace(
        {(
            $0.0.shedueledTime!.compare(($0.1.shedueledTime)!) == NSComparisonResult.OrderedAscending

        )
        })

由于

1 个答案:

答案 0 :(得分:1)

这取决于你想用零值做什么?

这将把它们全部放在开头:

let today = Date()
let a: [Date?] = [nil, today.addingTimeInterval(24*60*60), nil, today]


let b = a.sorted(by: { ($0 ?? Date(timeIntervalSince1970: 0)) < ($1 ?? Date(timeIntervalSince1970: 0))})

把它放进游乐场你可以玩它。要消除nil值,请在排序前使用flatmap。