実現したいこと
アプリ開発初学者です。
CoreDataを使ってTODOアプリを作りたいです。
発生している問題・分からないこと
PreviewとNavigationLinkの画面切り替えをする箇所でエラーが発生しました。
エラーメッセージ
error
1Missing argument for parameter 'saveTaskCoreData' in call 2Missing arguments for parameters 'taskCoreData', 'saveTaskCoreData' in call
該当のソースコード
Swift
1import SwiftUI 2 3 4struct TaskView: View { 5 @Environment(\.managedObjectContext)private var context 6 @ObservedObject var taskCoreData: TaskCoreData 7 @StateObject var saveTaskCoreData : SaveTaskCoreData 8 @FetchRequest( 9 entity:TaskCoreData.entity(),sortDescriptors: [NSSortDescriptor(keyPath:\TaskCoreData.date,ascending: false)], 10 animation: .default) 11 private var TaskCoreDataAddView: FetchedResults<TaskCoreData> 12 13 var body: some View { 14 NavigationStack { 15 VStack { 16 ZStack { 17 Image("backgrounditem6") 18 .resizable() 19 .frame(width: 256, height: 209) 20 .offset(x:0) 21 Image("backgrounditem5") 22 .resizable() 23 .frame(width: 189, height: 209) 24 .offset(x:-150, y:-50) 25 HStack (spacing: 0){ 26 Spacer().frame(width: 250) 27 NavigationLink { 28 CreateTaskView()//エラー 29 } label: { 30 ZStack { 31 Image("backgrounditemPlus") 32 .resizable() 33 .frame(width: 256, height: 180) 34 } 35 } 36 } 37 } 38 //.padding(.top, -) 39 List{ 40 ForEach(TaskCoreDataAddView) { TaskCoreDataAddView in 41 Text(taskCoreData.wrappedTitle) 42 } 43 } 44 45 46 } 47 .navigationBarBackButtonHidden(true) 48 } 49 } 50} 51 52#Preview { 53 TaskView() //エラー 54} 55
Swift
1import SwiftUI 2 3struct CreateTaskView: View { 4 @EnvironmentObject var taskData: TaskData 5 @ObservedObject var saveTaskCoreData: SaveTaskCoreData 6 @Environment(\.managedObjectContext)private var context 7 8 @State var inputTaskName = "" //タスク名 9 @State var selectedColor = Color.blue //カラー 10 @State var showSelectDate: Bool = false //日付選択画面の表示 11 @State var showSelectTime: Bool = false //時間選択画面の表示 12 13 var body: some View { 14 NavigationStack { 15 VStack { 16 HStack (spacing: 0) { 17 ZStack{ 18 Image("backgrounditem6") 19 .resizable() 20 .frame(width: 256, height: 209) 21 .offset(x: 100,y: -100) 22 NavigationLink { 23 TaskView() //エラー 24 } label: { 25 Image("backgrounditemLeft") 26 .resizable() 27 .frame(width: 256, height: 180) 28 } 29 } 30 Spacer().frame(width: 350) 31 } 32 .padding(.top,-230) 33 ZStack { 34 Ellipse() 35 .frame(width: 320, height: 220) 36 .foregroundColor(selectedColor) 37 Text(inputTaskName) 38 Text(taskData.SelectDataText) 39 .padding(.bottom,180) 40 Text(taskData.SelectTimeText) 41 .padding(.bottom,130) 42 }.padding() 43 TextField(" タスクを入力してください", text: $inputTaskName) 44 .textFieldStyle(.roundedBorder) 45 .frame(width: 350) 46 47 HStack (spacing: 40){ 48 Button(action: { 49 UIColorWellHelper.helper.execute?() 50 }, label: { 51 Image(systemName: "paintbrush") 52 .foregroundColor(.black) 53 .font(.system(size: 35)) 54 .background( 55 ColorPicker("", selection: $selectedColor, supportsOpacity: false) 56 .labelsHidden().opacity(0) 57 ) 58 }) 59 Button(action: { 60 showSelectDate = true 61 }, label: { 62 Image(systemName: "calendar") 63 .foregroundColor(.black) 64 .font(.system(size: 35)) 65 }) 66 .sheet(isPresented: $showSelectDate,content: { 67 SelectDate() 68 .presentationDetents([.medium]) 69 }) 70 Button(action: { 71 showSelectTime = true 72 }, label: { 73 Image(systemName: "clock") 74 .foregroundColor(.black) 75 .font(.system(size: 35)) 76 }) 77 .sheet(isPresented: $showSelectTime, content: { 78 SelectTime() 79 .presentationDetents([.medium]) 80 }) 81 Button(action: { 82 saveTaskCoreData.title = "\($inputTaskName)" 83 saveTaskCoreData.date = taskData.SelectDataValue 84 saveTaskCoreData.time = taskData.SelectTimeValue 85 saveTaskCoreData.writeData(context: context) 86 }, label: { 87 Image(systemName: "plus.circle") 88 .foregroundColor(.blue) 89 .font(.system(size: 35)) 90 }) 91 } 92 } 93 .navigationBarBackButtonHidden(true) 94 } 95 96 } 97} 98//ColorPiker// 99extension UIColorWell { 100 101 override open func didMoveToSuperview() { 102 super.didMoveToSuperview() 103 104 if let uiButton = self.subviews.first?.subviews.last as? UIButton { 105 UIColorWellHelper.helper.execute = { 106 uiButton.sendActions(for: .touchUpInside) 107 } 108 } 109 } 110} 111class UIColorWellHelper: NSObject { 112 static let helper = UIColorWellHelper() 113 var execute: (() -> ())? 114 @objc func handler(_ sender: Any) { 115 execute?() 116 } 117} 118//ColorPiker// 119#Preview { 120 CreateTaskView() エラー 121} 122
Swift
1import Foundation 2import CoreData 3 4 5extension TaskCoreData { 6 7 @nonobjc public class func fetchRequest() -> NSFetchRequest<TaskCoreData> { 8 return NSFetchRequest<TaskCoreData>(entityName: "TaskCoreData") 9 } 10 11 @NSManaged public var date: Date? 12 @NSManaged public var time: Date? 13 @NSManaged public var title: String? 14 15} 16extension TaskCoreData { 17 public var wrappedDate: Date {date ?? Date()} 18 public var wrappedTime: Date {time ?? Date()} 19 public var wrappedTitle: String {title ?? ""} 20} 21 22extension TaskCoreData : Identifiable { 23 24}
Switf
1import Foundation 2import SwiftUI 3import CoreData 4 5class SaveTaskCoreData: ObservableObject{ 6 @Published var date = Date() 7 @Published var time = Date() 8 @Published var title = "" 9 10 @Published var isNewData = false 11 @Published var updateItem:TaskCoreData! 12 13 func writeData(context :NSManagedObjectContext){ 14 if updateItem != nil { 15 updateItem.date = date 16 updateItem.time = time 17 updateItem.title = title 18 19 try! context.save() 20 21 updateItem = nil 22 isNewData.toggle() 23 24 date = Date() 25 time = Date() 26 title = "" 27 28 return 29 } 30 //データ新規作成(作成したデータをTaskCoreDataに) 31 let newTaskCoreData = TaskCoreData(context: context) 32 newTaskCoreData.date = date 33 newTaskCoreData.time = time 34 newTaskCoreData.title = title 35 36 do { 37 try context.save() 38 isNewData.toggle() 39 40 date = Date() 41 time = Date() 42 title = "" 43 } 44 catch { 45 print(error.localizedDescription) 46 } 47 } 48 //編集機能は今後追加する。(長押しで編集できるように) 49 func editItem(item: TaskCoreData) { 50 updateItem = item 51 52 date = item.wrappedDate 53 time = item.wrappedTime 54 title = item.wrappedTitle 55 56 isNewData.toggle() 57 } 58} 59
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
二日ほど自分なりに調べていますが直せませんでした。。。
調べる力をつけたかったので人に質問するのは控えていましたが進展がなさすぎて諦めました。
皆さんのお力をお借りしたいです。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
2024/02/29 17:09