質問編集履歴
4
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -173,7 +173,9 @@
|
|
173
173
|
}
|
174
174
|
func saveremove(){
|
175
175
|
let encoder=JSONEncoder()
|
176
|
-
|
176
|
+
let ej=Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish)
|
177
|
+
if let encodedValue=try? encoder.encode(ej){
|
178
|
+
sortarrays.append(ej)
|
177
179
|
UserDefaults.standard.set(encodedValue,forKey:"sortkey")
|
178
180
|
}
|
179
181
|
array.append(selectedDate);
|
3
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,10 +30,10 @@
|
|
30
30
|
Calendarpage(selectedDate:$selectedDate,array:$array)
|
31
31
|
Text(selectedDate,style:.date).padding()
|
32
32
|
Button(action:{self.show=true;m1=selectedDate;m2=selectedDate}){ Text("+")}.sheet(isPresented:self.$show){SecondView(show:$show,selectedDate:$selectedDate,array:$arraynewsta,rt:$m1,newfinish:$m2,sortarrays:$sortarrays)}
|
33
|
-
if(
|
33
|
+
if(array.count==0){
|
34
34
|
}
|
35
35
|
else{
|
36
|
-
ForEach(0..<
|
36
|
+
ForEach(0..<array.count, id:\.self){index in
|
37
37
|
if(equals(array[index], selectedDate)){
|
38
38
|
Text("\(sortarrays[index].arraystart,style:.time)〜\(sortarrays[index].arrayfinish,style:.time)")
|
39
39
|
Button(action: {isSheet=true}) {Text("削除")}.actionSheet(isPresented: $isSheet) { ActionSheet(title: Text("この予定を削除しますか?"), buttons: [.destructive(Text("削除"), action:{remove(index)}),.cancel(Text("キャンセル"), action: {})])}
|
@@ -143,7 +143,9 @@
|
|
143
143
|
}
|
144
144
|
func save(){
|
145
145
|
let encoder=JSONEncoder()
|
146
|
-
|
146
|
+
let ej=Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish)
|
147
|
+
if let encodedValue=try? encoder.encode(ej){
|
148
|
+
sortarrays.append(ej)
|
147
149
|
UserDefaults.standard.set(encodedValue,forKey:"sortkey")
|
148
150
|
}
|
149
151
|
array.append(selectedDate);
|
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
UserDefaults.standard.set(array,forKey:"sortkey")
|
67
67
|
}
|
68
68
|
}
|
69
|
-
struct Sortarray{
|
69
|
+
struct Sortarray:Codable{
|
70
70
|
var arraytitle:String
|
71
71
|
var arraymemo:String
|
72
72
|
var arraystart:Date
|
@@ -84,7 +84,7 @@
|
|
84
84
|
let eventStore=EKEventStore()
|
85
85
|
var body: some View {
|
86
86
|
VStack {
|
87
|
-
Button(action:{addEvent();
|
87
|
+
Button(action:{addEvent();save();self.show.toggle()}){Text("保存")}
|
88
88
|
TextField("タイトル",text:$newtitle)
|
89
89
|
Text("メモ")
|
90
90
|
TextEditor(text:$newmemo)
|
@@ -142,11 +142,12 @@
|
|
142
142
|
print("__FUNCTION__",#function)
|
143
143
|
}
|
144
144
|
func save(){
|
145
|
+
let encoder=JSONEncoder()
|
146
|
+
if let encodedValue=try? encoder.encode(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish)){
|
147
|
+
UserDefaults.standard.set(encodedValue,forKey:"sortkey")
|
148
|
+
}
|
145
149
|
array.append(selectedDate);
|
146
|
-
array.append(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish))
|
147
150
|
UserDefaults.standard.set(array,forKey:"key")
|
148
|
-
UserDefaults.standard.set(array,forKey:"sortkey")
|
149
|
-
self.show.toggle()
|
150
151
|
}
|
151
152
|
}
|
152
153
|
struct HenshuView: View{
|
@@ -169,8 +170,11 @@
|
|
169
170
|
DatePicker("終了時間",selection:$newfinish)
|
170
171
|
}
|
171
172
|
func saveremove(){
|
173
|
+
let encoder=JSONEncoder()
|
174
|
+
if let encodedValue=try? encoder.encode(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish)){
|
175
|
+
UserDefaults.standard.set(encodedValue,forKey:"sortkey")
|
176
|
+
}
|
172
177
|
array.append(selectedDate);
|
173
|
-
array.append(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish))
|
174
178
|
array.remove(at:n);
|
175
179
|
sortarrays.remove(at:n)
|
176
180
|
UserDefaults.standard.set(array,forKey:"key")
|
1
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,28 +21,25 @@
|
|
21
21
|
@State var isSheet:Bool=false
|
22
22
|
@State var selectedDate=Date()
|
23
23
|
@State var array:[Date]
|
24
|
-
@State var arraytitle:[String]
|
25
|
-
@State var arraymemo:[String]
|
26
|
-
@State var arraystart:[Date]
|
27
|
-
@State var arrayfinish:[Date]
|
28
24
|
@State var n=0
|
29
25
|
@State var m1=Date()
|
30
26
|
@State var m2=Date()
|
27
|
+
@State var sortarrays:[Sortarray]
|
31
28
|
var body: some View{
|
32
29
|
ScrollView{
|
33
30
|
Calendarpage(selectedDate:$selectedDate,array:$array)
|
34
31
|
Text(selectedDate,style:.date).padding()
|
35
|
-
Button(action:{self.show=true;m1=selectedDate;m2=selectedDate}){ Text("+")}.sheet(isPresented:self.$show){SecondView(show:$show,selectedDate:$selectedDate,array:$array,
|
36
|
-
if(array.count==0){
|
32
|
+
Button(action:{self.show=true;m1=selectedDate;m2=selectedDate}){ Text("+")}.sheet(isPresented:self.$show){SecondView(show:$show,selectedDate:$selectedDate,array:$arraynewsta,rt:$m1,newfinish:$m2,sortarrays:$sortarrays)}
|
33
|
+
if(sortarrays.count==0){
|
37
34
|
}
|
38
35
|
else{
|
39
|
-
ForEach(0..<array.count, id:\.self){index in
|
36
|
+
ForEach(0..<sortarrays.count, id:\.self){index in
|
40
37
|
if(equals(array[index], selectedDate)){
|
41
|
-
Text("\(arrays
|
38
|
+
Text("\(sortarrays[index].arraystart,style:.time)〜\(sortarrays[index].arrayfinish,style:.time)")
|
42
39
|
Button(action: {isSheet=true}) {Text("削除")}.actionSheet(isPresented: $isSheet) { ActionSheet(title: Text("この予定を削除しますか?"), buttons: [.destructive(Text("削除"), action:{remove(index)}),.cancel(Text("キャンセル"), action: {})])}
|
43
|
-
Button(action:{self.show2 = true;n=index}){Text("編集")}.sheet(isPresented:self.$show2){HenshuView(show2:$show2,selectedDate:$selectedDate,array:$array,
|
44
|
-
Text("\(array
|
45
|
-
Text("\(array
|
40
|
+
Button(action:{self.show2 = true;n=index}){Text("編集")}.sheet(isPresented:self.$show2){HenshuView(show2:$show2,selectedDate:$selectedDate,array:$array,index:$n,newtitle:$arraytitle[index],newmemo:$arraymemo[index],newstart:$arraystart[index],newfinish:$arrayfinish[index],sortarrays:$sortarrays)}
|
41
|
+
Text("\(sortarrays[index].arraytitle)")
|
42
|
+
Text("\(sortarrays[index].arraymemo)")
|
46
43
|
}
|
47
44
|
}
|
48
45
|
}
|
@@ -51,15 +48,9 @@
|
|
51
48
|
init(){
|
52
49
|
UIDatePicker.appearance().minuteInterval=5
|
53
50
|
let a=UserDefaults.standard.array(forKey:"key") as? [Date] ?? []
|
54
|
-
let t=UserDefaults.standard.array(forKey:"titlekey") as? [String] ?? []
|
55
|
-
let m=UserDefaults.standard.array(forKey:"memokey") as? [String] ?? []
|
56
|
-
let s=UserDefaults.standard.array(forKey:"s
|
51
|
+
let sort=UserDefaults.standard.array(forKey:"sortkey") as? [Sortarray] ?? []
|
57
|
-
let f=UserDefaults.standard.array(forKey:"finishkey") as? [Date] ?? []
|
58
52
|
_array=State(initialValue:a)
|
59
|
-
_arraytitle=State(initialValue:t)
|
60
|
-
_arraymemo=State(initialValue:m)
|
61
|
-
_arrays
|
53
|
+
_sortarrays=State(initialValue:sort)
|
62
|
-
_arrayfinish=State(initialValue:f)
|
63
54
|
}
|
64
55
|
func equals(_ date1:Date, _ date2:Date)->Bool{
|
65
56
|
let calendar = Calendar.current
|
@@ -70,33 +61,30 @@
|
|
70
61
|
}
|
71
62
|
func remove(_ n:Int){
|
72
63
|
array.remove(at:n);
|
73
|
-
arraytitle.remove(at:n);
|
74
|
-
arraymemo.remove(at:n);
|
75
|
-
arrays
|
64
|
+
sortarrays.remove(at:n)
|
76
|
-
arrayfinish.remove(at:n)
|
77
65
|
UserDefaults.standard.set(array,forKey:"key")
|
78
|
-
UserDefaults.standard.set(arraytitle,forKey:"titlekey")
|
79
|
-
UserDefaults.standard.set(arraymemo,forKey:"memokey")
|
80
|
-
UserDefaults.standard.set(array
|
66
|
+
UserDefaults.standard.set(array,forKey:"sortkey")
|
81
|
-
UserDefaults.standard.set(arrayfinish,forKey:"finishkey")
|
82
|
-
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
struct Sortarray{
|
70
|
+
var arraytitle:String
|
71
|
+
var arraymemo:String
|
72
|
+
var arraystart:Date
|
73
|
+
var arrayfinish:Date
|
83
74
|
}
|
84
75
|
struct SecondView: View{
|
85
76
|
@Binding var show:Bool
|
86
77
|
@Binding var selectedDate:Date
|
87
78
|
@Binding var array:[Date]
|
88
|
-
@Binding var arraytitle:[String]
|
89
|
-
@Binding var arraymemo:[String]
|
90
|
-
@Binding var arraystart:[Date]
|
91
|
-
@Binding var arrayfinish:[Date]
|
92
79
|
@Binding var newstart:Date
|
93
80
|
@Binding var newfinish:Date
|
81
|
+
@Binding var sortarrays:[Sortarray]
|
94
82
|
@State var newtitle=""
|
95
83
|
@State var newmemo=""
|
96
84
|
let eventStore=EKEventStore()
|
97
85
|
var body: some View {
|
98
86
|
VStack {
|
99
|
-
Button(action:{addEvent(
|
87
|
+
Button(action:{addEvent(); save()}){Text("保存")}
|
100
88
|
TextField("タイトル",text:$newtitle)
|
101
89
|
Text("メモ")
|
102
90
|
TextEditor(text:$newmemo)
|
@@ -136,7 +124,7 @@
|
|
136
124
|
fatalError("カレンダーの認証部分でエラー @unknown default")
|
137
125
|
}
|
138
126
|
}
|
139
|
-
func addEvent(
|
127
|
+
func addEvent(){
|
140
128
|
let defaultCalendar=eventStore.defaultCalendarForNewEvents
|
141
129
|
let event=EKEvent(eventStore:eventStore)
|
142
130
|
event.title=newtitle
|
@@ -155,15 +143,9 @@
|
|
155
143
|
}
|
156
144
|
func save(){
|
157
145
|
array.append(selectedDate);
|
158
|
-
arraytitle.append(newtitle);
|
159
|
-
arraymemo.append(newmemo);
|
160
|
-
arraystart.append(newstart)
|
161
|
-
array
|
146
|
+
array.append(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish))
|
162
147
|
UserDefaults.standard.set(array,forKey:"key")
|
163
|
-
UserDefaults.standard.set(arraytitle,forKey:"titlekey")
|
164
|
-
UserDefaults.standard.set(arraymemo,forKey:"memokey")
|
165
|
-
UserDefaults.standard.set(array
|
148
|
+
UserDefaults.standard.set(array,forKey:"sortkey")
|
166
|
-
UserDefaults.standard.set(arrayfinish,forKey:"finishkey")
|
167
149
|
self.show.toggle()
|
168
150
|
}
|
169
151
|
}
|
@@ -171,42 +153,30 @@
|
|
171
153
|
@Binding var show2:Bool
|
172
154
|
@Binding var selectedDate:Date
|
173
155
|
@Binding var array:[Date]
|
174
|
-
@Binding var arraytitle:[String]
|
175
|
-
@Binding var arraymemo:[String]
|
176
|
-
@Binding var arraystart:[Date]
|
177
|
-
@Binding var arrayfinish:[Date]
|
178
156
|
@Binding var index:Int
|
179
157
|
@Binding var newtitle:String
|
180
158
|
@Binding var newmemo:String
|
181
159
|
@Binding var newstart:Date
|
182
160
|
@Binding var newfinish:Date
|
161
|
+
@Binding var sortarrays:[Sortarray]
|
183
162
|
let eventStore=EKEventStore()
|
184
163
|
var body: some View{
|
185
|
-
Button(action:{addEvent(
|
164
|
+
Button(action:{addEvent();saveremove(index);self.show2.toggle()}){Text("保存")}
|
186
165
|
TextField("タイトル",text:$newtitle)
|
187
166
|
Text("メモ")
|
188
167
|
TextEditor(text:$newmemo)
|
189
168
|
DatePicker("開始時間",selection:$newstart)
|
190
169
|
DatePicker("終了時間",selection:$newfinish)
|
191
170
|
}
|
192
|
-
func saveremove(
|
171
|
+
func saveremove(){
|
193
|
-
array.append(selectedDate)
|
172
|
+
array.append(selectedDate);
|
194
|
-
arraytitle.append(newtitle)
|
195
|
-
arraymemo.append(newmemo)
|
196
|
-
arraystart.append(newstart)
|
197
|
-
array
|
173
|
+
array.append(Sortarray(arraytitle:newtitle,arraymemo:newmemo,arraystart:newstart,arrayfinish:newfinish))
|
198
|
-
array.remove(at:n)
|
174
|
+
array.remove(at:n);
|
199
|
-
arraytitle.remove(at:n)
|
200
|
-
arraymemo.remove(at:n)
|
201
|
-
arrays
|
175
|
+
sortarrays.remove(at:n)
|
202
|
-
arrayfinish.remove(at:n)
|
203
176
|
UserDefaults.standard.set(array,forKey:"key")
|
204
|
-
UserDefaults.standard.set(arraytitle,forKey:"titlekey")
|
205
|
-
UserDefaults.standard.set(arraymemo,forKey:"memokey")
|
206
|
-
UserDefaults.standard.set(array
|
177
|
+
UserDefaults.standard.set(array,forKey:"sortkey")
|
207
|
-
UserDefaults.standard.set(arrayfinish,forKey:"finishkey")
|
208
|
-
}
|
178
|
+
}
|
209
|
-
func addEvent(
|
179
|
+
func addEvent(){
|
210
180
|
let defaultCalendar=eventStore.defaultCalendarForNewEvents
|
211
181
|
let event=EKEvent(eventStore: eventStore)
|
212
182
|
event.title=newtitle
|