回答編集履歴
1
Stringの配列をstructの配列にしたコードを追記しました。
test
CHANGED
@@ -76,3 +76,72 @@
|
|
76
76
|
}
|
77
77
|
```
|
78
78
|
|
79
|
+
---
|
80
|
+
|
81
|
+
コメントありがとうございます。
|
82
|
+
追記です。
|
83
|
+
|
84
|
+
> structでまとめるとはどういうことでしょうか?
|
85
|
+
|
86
|
+
nameとdateをstructで1行のデータにまとめる感じです。
|
87
|
+
次のようなイメージでしょうか。
|
88
|
+
|
89
|
+
```swift
|
90
|
+
import SwiftUI
|
91
|
+
struct ContentView: View {
|
92
|
+
var array: [SampleStruct] = [
|
93
|
+
SampleStruct(name: "玉ねぎ", date: "2022/7/25"),
|
94
|
+
SampleStruct(name: "じゃがいも", date: "2022/7/24"),
|
95
|
+
SampleStruct(name: "にんじん", date: "2022/7/26"),
|
96
|
+
SampleStruct(name: "牛肉", date: "2022/7/27"),
|
97
|
+
SampleStruct(name: "きのこ", date: "2022/7/28"),
|
98
|
+
]
|
99
|
+
@State private var searchText = ""
|
100
|
+
var body: some View {
|
101
|
+
VStack {
|
102
|
+
NavigationView {
|
103
|
+
List {
|
104
|
+
ForEach(searchResults, id: \.self) { name in
|
105
|
+
Text(name)
|
106
|
+
}
|
107
|
+
}
|
108
|
+
.searchable(text: $searchText, prompt: "食材の検索")
|
109
|
+
.keyboardType(.default)
|
110
|
+
.navigationTitle("全ての食材")
|
111
|
+
}
|
112
|
+
.navigationViewStyle(StackNavigationViewStyle())
|
113
|
+
List(0 ..< sortedArray.count, id:\.self) { item in
|
114
|
+
Text(sortedArray[item].name)
|
115
|
+
}
|
116
|
+
}
|
117
|
+
}
|
118
|
+
var searchResults: [String] {
|
119
|
+
let nameArray = array.map({ $0.name })
|
120
|
+
if searchText.isEmpty {
|
121
|
+
return nameArray
|
122
|
+
} else {
|
123
|
+
return nameArray.filter{ $0.contains(searchText) }
|
124
|
+
}
|
125
|
+
}
|
126
|
+
var sortedArray: [SampleStruct] {
|
127
|
+
array.sorted(by: { $0.formattedDate < $1.formattedDate })
|
128
|
+
}
|
129
|
+
}
|
130
|
+
struct SampleStruct {
|
131
|
+
var name: String
|
132
|
+
var date: String
|
133
|
+
var formattedDate: Date {
|
134
|
+
dateFromString(string: date, format: "y/M/d")
|
135
|
+
}
|
136
|
+
func dateFromString(string: String, format: String) -> Date {
|
137
|
+
let formatter: DateFormatter = DateFormatter()
|
138
|
+
formatter.calendar = Calendar(identifier: .gregorian)
|
139
|
+
formatter.dateFormat = format
|
140
|
+
return formatter.date(from: string)!
|
141
|
+
}
|
142
|
+
}
|
143
|
+
```
|
144
|
+
|
145
|
+
SwiftUIのチュートリアルを一通りやってみるのも良いかもしれませんね。
|
146
|
+
https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
|
147
|
+
|