【发布时间】:2022-01-02 10:10:39
【问题描述】:
我有两个模型,ExerciseModel 和 RoutineModel,其中一个例程由一个或多个练习组成。我正在尝试将 ExerciseArrayObject 类中的数据数组的内容用作我的 RoutineArrayObject 数据数组的一部分。
我收到以下错误:'self' used in property access 'exercises' before all stored properties are initialized
这是练习数组对象:
import Foundation
import SwiftUI
class ExerciseArrayObject: ObservableObject {
@Published var dataArray = [ExerciseModel]()
init() {
//print("FETCH FROM DATABASE HERE")
let exercise1 = ExerciseModel(exerciseID: "", userID: "", username: "userA", exerciseTitle: "Exercise 1", dateCreate: Date(), exerciseImage: "logo", repsInfo: "12 reps", setsInfo: "3 sets")
let exercise2 = ExerciseModel(exerciseID: "", userID: "", username: "userB", exerciseTitle: "Exercise 2", dateCreate: Date(), exerciseImage: "logo", repsInfo: "8 reps", setsInfo: "4 sets")
let exercise3 = ExerciseModel(exerciseID: "", userID: "", username: "userC", exerciseTitle: "Exercise 3", dateCreate: Date(), exerciseImage: "logo", repsInfo: "5 reps", setsInfo: "5 sets")
let exercise4 = ExerciseModel(exerciseID: "", userID: "", username: "userD", exerciseTitle: "Exercise 4", dateCreate: Date(), exerciseImage: "logo", repsInfo: "20 reps", setsInfo: "10 sets")
let exercise5 = ExerciseModel(exerciseID: "", userID: "", username: "userE", exerciseTitle: "Exercise 5", dateCreate: Date(), exerciseImage: "logo", repsInfo: "10 reps", setsInfo: "3 sets", sharedUserUsername: "Shared User")
self.dataArray.append(exercise1)
self.dataArray.append(exercise2)
self.dataArray.append(exercise3)
self.dataArray.append(exercise4)
self.dataArray.append(exercise5)
}
}
这里是 RoutineArrayObject:
class RoutineArrayObject: ObservableObject {
@ObservedObject var exercises: ExerciseArrayObject
@Published var dataArray = [RoutineModel]()
init() {
//print("FETCH FROM DATABASE HERE")
let routine1 = RoutineModel(routineID: "", userID: "", username: "user1", routineTitle: "Yoga Routine", exercises: exercises.dataArray, dateCreate: Date(), routineImage: "demoexercise", noOfExercises: "\(exercises.dataArray.count)")
let routine2 = RoutineModel(routineID: "", userID: "", username: "user2", routineTitle: "Core Routine", exercises: exercises.dataArray, dateCreate: Date(), routineImage: "logo", noOfExercises: "\(exercises.dataArray.count)", sharedUserID: "", sharedUserUsername: "Shared User")
self.dataArray.append(routine1)
self.dataArray.append(routine2)
}
}
【问题讨论】:
-
您可以将 init 中的代码添加到单独的函数中,然后从
.onAppear中的视图调用该函数 -
或者将两个类合并为一个。
-
你不应该在
RoutineArrayObject中使用@ObservedObject var exercises: ExerciseArrayObject,@ObservedObject用于视图,而不是类。
标签: arrays swift mvvm swiftui model