質問編集履歴

2

誤記修正

2021/07/25 12:00

投稿

key0
key0

スコア0

test CHANGED
File without changes
test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  = try NSKeyedArchiver.archivedData(
150
150
 
151
- withRootObject:[entity1, entity2], requiringSecureCoding: false) as Data
151
+ withRootObject:[detail1, detail2], requiringSecureCoding: false) as Data
152
152
 
153
153
 
154
154
 

1

初めに記載したエラーは発生しなくなりましたが、別エラーが発生。表示部分の実装も記載しました。

2021/07/25 12:00

投稿

key0
key0

スコア0

test CHANGED
File without changes
test CHANGED
@@ -18,6 +18,10 @@
18
18
 
19
19
  "Persistent store migration failed, missing mapping model."
20
20
 
21
+ →再起動や触れているうちに上記は出なくなり、以下が出るようになりました。
22
+
23
+ "Fatal error: Unexpectedly found nil while unwrapping an Optional value"
24
+
21
25
  ```
22
26
 
23
27
 
@@ -192,6 +196,206 @@
192
196
 
193
197
  ```
194
198
 
199
+ [追記]
200
+
201
+ 表示は以下DetailViewで実施。
202
+
203
+ 前提
204
+
205
+ 親画面NameListViewにItemEntity.nameを表示し、タップしたら
206
+
207
+ 子画面DetailViewにItemEntity.detailArrayのリストを表示したい。
208
+
209
+
210
+
211
+ ```
212
+
213
+ import SwiftUI
214
+
215
+ import CoreData
216
+
217
+
218
+
219
+ struct DetailView: View {
220
+
221
+
222
+
223
+ @ObservedObject var oneItemEntity:ItemEntity
224
+
225
+
226
+
227
+ func getDetailList() -> [Detail] {
228
+
229
+ var detailArray: [Detail] = []
230
+
231
+ do {
232
+
233
+ detailArray = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(oneItemEntity.detailArray!) as! [Detail]
234
+
235
+ } catch let error { // **** ここでエラー Unexpectedly found nil while unwrapping an Optional value****
236
+
237
+ print(error.localizedDescription)
238
+
239
+ }
240
+
241
+
242
+
243
+ return detailArray
244
+
245
+ }
246
+
247
+
248
+
249
+ var body: some View {
250
+
251
+ VStack(alignment: .leading) {
252
+
253
+ HStack {
254
+
255
+ Group{
256
+
257
+ Text("state:")
258
+
259
+ Text("(getDetailList()[0].state)")
260
+
261
+ .font(.title)
262
+
263
+ }
264
+
265
+ }
266
+
267
+ Group{
268
+
269
+ Spacer()
270
+
271
+ }
272
+
273
+ }
274
+
275
+ }
276
+
277
+ }
278
+
279
+
280
+
281
+ struct DetailView_Previews: PreviewProvider {
282
+
283
+
284
+
285
+ static var context = PersistenceController.preview.container.viewContext
286
+
287
+
288
+
289
+ static var previews: some View {
290
+
291
+
292
+
293
+ let itemEntity = ItemEntity.init(context: context)
294
+
295
+
296
+
297
+ return Group {
298
+
299
+ DetailView(
300
+
301
+ oneItemEntity: itemEntity
302
+
303
+ )
304
+
305
+ }
306
+
307
+ .previewLayout(.fixed(width: 800, height: 70))
308
+
309
+ }
310
+
311
+ }
312
+
313
+
314
+
315
+ ```
316
+
317
+ 参考:親画面NameListView
318
+
319
+ ```
320
+
321
+
322
+
323
+ import SwiftUI
324
+
325
+
326
+
327
+ struct NameListView: View {
328
+
329
+ @Environment(.managedObjectContext) private var context
330
+
331
+
332
+
333
+ @FetchRequest(
334
+
335
+ entity: ItemEntity.entity(),
336
+
337
+ sortDescriptors: [
338
+
339
+ NSSortDescriptor(
340
+
341
+ keyPath: \ItemEntity.name,
342
+
343
+ ascending: true
344
+
345
+ )
346
+
347
+ ],
348
+
349
+ predicate: nil
350
+
351
+ )
352
+
353
+
354
+
355
+ private var items: FetchedResults<ItemEntity>
356
+
357
+
358
+
359
+ var body: some View {
360
+
361
+ 省略
362
+
363
+ Core Data のItemEntityについて、detailArrayを定義する前は
364
+
365
+ nameの表示は可能でした。
366
+
367
+ }
368
+
369
+
370
+
371
+ }
372
+
373
+ struct NameListView_Previews: PreviewProvider {
374
+
375
+ static var previews: some View {
376
+
377
+ NameListView()
378
+
379
+ .environment(
380
+
381
+ .managedObjectContext,
382
+
383
+ PersistenceController.preview.container.viewContext)
384
+
385
+
386
+
387
+ }
388
+
389
+ }
390
+
391
+ ```
392
+
393
+
394
+
395
+
396
+
397
+
398
+
195
399
  ### 試したこと
196
400
 
197
401
 
@@ -200,4 +404,10 @@
200
404
 
201
405
  上記のままではエラー発生。「問題と予測している箇所」をコメントアウトすればpreviewできる
202
406
 
407
+ [追記]
408
+
409
+ 上記は勘違いでした。
410
+
411
+ ItemEntityを使用しない画面は、preview可能です。
412
+
203
413
  ・Transformableというので最初実現しようとしたが断念