現在SwiftUIとCoreDataを利用して、データの保存アプリを作成しています。
データ保存画面で値を入力したあと、確認画面を開く際にアプリがクラッシュします。
シュミレーター上では問題ないのですが、実機で行い際にクラッシュします。
原因がわからないのでご指導お願いします。
データ保存画面↓
swift
1 2// 3// BtListView.swift 4 5 6import SwiftUI 7import CoreData 8 9 10 11struct BtListView: View { 12 13 @Environment(.managedObjectContext) var context 14 @ObservedObject var keyboard = KeyboardObserver() 15 16 func addBun(){ 17 let newBun = BtList(context:context) 18 newBun.id = UUID() 19 newBun.isComplete = false 20 if bunValue != ""{ //入力無しでボタンを押した場合の条件分類 21 newBun.bun = bunValue 22 } 23 newBun.saveDate = Date() 24 do{ 25 try context.save() 26 }catch{ 27 print(error) 28 } 29 } 30 31 32 @State var bunValue:String = "" 33 @State var creValue:String = "" 34 35 36 let kidneys = ["BUN","CRE"] 37 38 39 let kidneyUnits = ["BUN":"mg/dL","CRE":"mg/dL"] 40 41 42 let kidneyBtCriteria = ["BUN":"6-25","CRE":"0.5-1.6"] 43 44 45 var body: some View { 46 47 List{ 48 Section(header:Text("腎機能")){ 49 50 HStack{ 51 ListFirstContainer(categoryName: kidneys[0]) 52 TextField("数字を入力",text:self.$bunValue) 53 .keyboardType(.numberPad) 54 ListSecondContainer(btUnitValue: kidneyUnits["BUN"] ?? "error", btCriteriaValue: kidneyBtCriteria["BUN"] ?? "error") 55 Button(action:{ 56 self.addBun() 57 UIApplication.shared.endEditing() 58 }){ 59 Text("追加") 60 } 61 } 62 63 HStack{ 64 ListFirstContainer(categoryName: kidneys[1]) 65 TextField("数字を入力",text: self.$creValue) 66 .keyboardType(.numberPad) 67 ListSecondContainer(btUnitValue: kidneyUnits["CRE"] ?? "error", btCriteriaValue: kidneyBtCriteria["CRE"] ?? "error") 68 Button(action:{ 69 self.addCre() 70 UIApplication.shared.endEditing() 71 } 72 ){ 73 Text("追加") 74 } 75 } 76 }//Sectionの閉じ 77 78 }//Listの閉じ 79 .onAppear{ 80 self.keyboard.startObserve() 81 }.onDisappear{ 82 self.keyboard.stopObserve() 83 }.padding(.bottom,keyboard.keyboardHeight) 84 .animation(.easeOut) 85 }//bodyの閉じ 86 }//structの閉じ 87 88 89 90 91struct BtListView_Previews: PreviewProvider { 92 static var previews: some View { 93 BtListView() 94 } 95} 96
データ表示画面↓(エラーが出ているのがこのファイルです)
swift
1 2// showBunValue.swift 3 4 5import SwiftUI 6import CoreData 7 8struct showBunValue:View { 9 10 11 12 @FetchRequest( 13 entity: BtList.entity(), 14 sortDescriptors: [NSSortDescriptor(keyPath:\BtList.saveDate,ascending:false)], 15 predicate: NSPredicate(format:"isComplete == %@",NSNumber(value:false)) 16 ) 17 var notCompletedBunLists:FetchedResults<BtList> 18 19 20 var body:some View { 21 List{ 22 Section(header:Text("結果|基準値|単位")){ 23 ForEach(notCompletedBunLists){list in 24 if list.bun as? String != nil{ 25 HStack{ 26 BunValueList(btList:list) 27 ListSecondContainer(btUnitValue: BtListView().kidneyUnits["BUN"] ?? "error", btCriteriaValue: BtListView().kidneyBtCriteria["BUN"] ?? "error") 28 } 29 }else{ 30 Text("error") 31 } 32 } 33 } 34 } 35 } 36} 37 38struct showBunValue_Previews: PreviewProvider { 39 static var previews: some View { 40 showBunValue() 41 } 42} 43
よろしくお願いいたします。
あなたの回答
tips
プレビュー