ListViewに表示した文字列を追加したり、削除するタイミングでUDを使って端末内に保存するアプリを作ってみた。

import SwiftUI
let aKey = "arraykey"
struct LogView: View {
@State var array:[String] = []
var body: some View {
VStack{
if(!array.isEmpty){
List {
ForEach(array, id: \.self) { i in
Text(i)
}.onDelete(perform: delete)
}
}else{
Text("データはありません。")
}
Button {
array.append("some data")
UserDefaults.standard.set(array, forKey: aKey)
} label: {
Text("追加する")
}
}.onAppear{
if let tmp:[String] = UserDefaults.standard.array(forKey: aKey) as? [String]{
array = tmp
}else{
print("no key")
}
}
}
func delete(at offsets: IndexSet) {
array.remove(atOffsets: offsets)
UserDefaults.standard.set(array, forKey: aKey)
}
}
struct LogView_Previews: PreviewProvider {
static var previews: some View {
LogView()
}
}
onAppearで端末に保存したデータを読み込んでいる。