【发布时间】:2018-03-20 05:53:06
【问题描述】:
我正在尝试按日期对一组自定义对象进行排序,但日期以字符串形式存储在 .medium dateStyle 中。但是,一些对象也有一个空字符串作为它们的日期。
如何仍然对日期为空的数组进行排序?
这是我的代码:
let objA = testObj(dateProp: "Mar 13, 2018")
let objB = testObj(dateProp: "Apr 13, 2018")
let objC = testObj(dateProp: "Apr 12, 2018")
let objD = testObj(dateProp: "")
let arr: [testObj] = [objA, objB, objC]
let sortedArr = arr.sorted(by: { DateHandler.shared.convertStringToDate(string: $0.dateProp)?.compare(DateHandler.shared.convertStringToDate(string: $1.dateProp)!) == .orderedDescending })
print(sortedArr)
DateHandler.shared.convertStringtoDate 只是将字符串转换为日期,但强制解包可选会导致代码在出现空白字符串而不是日期时中断。
【问题讨论】:
-
为什么那个日期有一个空字符串?那意味着什么?今天的日期 ?根本没有日期?
-
为什么要添加空白字符串有什么需要呢?我不明白。你能描述一下吗?
-
为什么日期存储为字符串?为什么要使用空字符串?将日期属性设为可选。
-
@Nitish 如果我有一个商店列表和访问它们的日期,但随后我添加了一个我还没有访问过的商店,那么日期将是一个空字符串
-
@rmaddy 如果该属性是可选的并且不存在,那么 compare() 函数在这种情况下是否仍然有效?