実現したいこと
アプリ開発初学者です。
CoreDataを使ってTODOアプリを作りたいです。
発生している問題・分からないこと
PreviewとNavigationLinkの画面切り替えをする箇所でエラーが発生しました。
エラーメッセージ
error
1Missing argument for parameter 'saveTaskCoreData' in call 2Missing arguments for parameters 'taskCoreData', 'saveTaskCoreData' in call
該当のソースコード
Swift
1import SwiftUI2 3 4struct TaskView: View {5 @Environment(\.managedObjectContext)private var context 6 @ObservedObject var taskCoreData: TaskCoreData7 @StateObject var saveTaskCoreData : SaveTaskCoreData8 @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 in41 Text(taskCoreData.wrappedTitle)42 }43 }44 45 46 }47 .navigationBarBackButtonHidden(true)48 }49 }50}51 52#Preview {53 TaskView() //エラー54}55
Swift
1import SwiftUI2 3struct CreateTaskView: View {4 @EnvironmentObject var taskData: TaskData5 @ObservedObject var saveTaskCoreData: SaveTaskCoreData6 @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 = true61 }, 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 = true72 }, 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.SelectDataValue84 saveTaskCoreData.time = taskData.SelectTimeValue85 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 Foundation2import CoreData3 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
試したこと・調べたこと
上記の詳細・結果
二日ほど自分なりに調べていますが直せませんでした。。。
調べる力をつけたかったので人に質問するのは控えていましたが進展がなさすぎて諦めました。
皆さんのお力をお借りしたいです。
補足
特になし

0 コメント