![](/img/trans.png)
[英]How to create a predicate to filter array of enums with associated values in Swift?
[英]How can I sort an array of enums with associated values in Swift?
關於 StackOverflow 的第一個問題……請善待。 :)
我有一個帶有關聯值的枚舉數組,我想按時間順序對其進行排序。 其中一個值包含一個日期(作為字符串),該日期被顯示並應用於排序。
這是目前的樣子:
enum cellType {
case standard(text: String, icon: UIImage, hasChildren: Bool, reference: String)
case detailed(text: String, secondaryText: String, icon: UIImage, hasChildren: Bool, reference: String)
var identifier: String {
switch self {
case .standard: return "standardCell"
case .detailed: return "detailedCell"
}
}
}
var cellData: [cellType]
然后cellData
被填充一些cellType
s。 secondaryText
的值包含日期,如下所示:
print(cellData)
// [
// AppIdentifier.cellType.detailed(text: "Title A", secondaryText: "2017-10-20T10:04:00.000+02:00", icon: <UIImage: 0x60c0002a6660>, {12, 21}, hasChildren: false, reference: "40693"),
// AppIdentifier.cellType.detailed(text: "Title B", secondaryText: "2016-12-14T10:04:00.000+02:00", icon: <UIImage: 0x60c0002a6660>, {12, 21}, hasChildren: false, reference: "40632")
// AppIdentifier.cellType.detailed(text: "Title C", secondaryText: "2017-10-20T10:07:00.000+02:00", icon: <UIImage: 0x60c0002a6660>, {12, 21}, hasChildren: false, reference: "40694"),
// AppIdentifier.cellType.detailed(text: "Title D", secondaryText: "2017-11-16T10:34:00.000+02:00", icon: <UIImage: 0x60c0002a6660>, {12, 21}, hasChildren: false, reference: "40633"),
// AppIdentifier.cellType.detailed(text: "Title E", secondaryText: "2017-10-19T10:12:00.000+02:00", icon: <UIImage: 0x60c0002a6660>, {12, 21}, hasChildren: false, reference: "40682"),
// ]
當我嘗試對數組進行排序時,以下內容顯然太簡單了:
var cellDataSorted = cellData.sorted(by: {$0.detailed.secondaryText < $1.detailed.secondaryText})
// Swift Compiler Error: enum element ’detailed’ cannot be referenced as an instance member
對這個數組進行排序的最佳方法是什么? 提前致謝!
(我是在電話上寫這個的,所以.. 如有必要,請修復語法)
在 sorted 函數中使用以下代碼:
if case .detailed(_, let date0, _, _, _) = $0, case .detailed(_, let date1, _, _, _) = $1 {
return date0 < date1
} else {
// One of them didn't have date (should never happen)
return true
}
您的問題是,您正在訪問枚舉的參數,就好像它是類/結構的實例一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.