StackOverflowの最初の質問...優しくしてください。 :)Swiftで関連付けられた値を持つ列挙型の配列をソートするにはどうすればよいですか?
私は年代順にソートしたい関連する値を持つ列挙型の配列を持っています。これらの値の1つには、表示されるソートに使用する日付(String)が含まれています。ここで
は、それが現時点では次のようになります。
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
のが移入されます。 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
ソートするための最良の方法だろう何この配列?前もって感謝します!ソート関数内
http://www.stackoverflow.com/help/how-to-ask – sasquatch
Swiftで列挙型の並べ替えと配列の検索をお勧めします。私はこの質問が以前に答えられたと確信しています。そうでない場合は、自分で質問に答えるのに役立つ質問が間違いなくあります。 – Fogmeister
@sasquatch私はそのページを読んでいます。あなたが好きではなかったことを教えてください。私はそれを修正して次回はもっとうまくやることができます。ありがとう。 – Marc