嘿伙计们,我正在制作我的第一个应用程序并需要一些帮助。我的锻炼跟踪器应用程序有两个类,您可以在下面找到。我有两个视图控制器连接到他们自己的swift文件。
Heres my first view controller
基本上它的作用是将文本字段和步进器中的数据转换为"锻炼"然后将对象附加到" WorkoutList" class array。
我有一个打印语句设置,可以打印Array.count。它在调试中显示正确的数字,但是当我切换视图时,它会重置为零。
@IBAction func addToWorkoutList(_ sender: UIButton) {
let workout = Workout(name: workoutName.text!, description: workoutDescription.text!, sets: Int(setStepper.text!)!, reps: Int(repStepper.text!)!)
workoutArrayList.append(workout)
print(workoutArrayList.count)
}
第二个视图继承了第一个视图类,这就是我如何访问" WorkoutArrayList"
class OverViewViewController: NewWorkoutViewController, UITableViewDelegate, UITableViewDataSource {
我的应用程序基本上允许您添加锻炼,然后根据您提供的数据生成图表。这可以让您轻松想象您在健身房的收益。我这样做是一个学习项目,所以对构建这个应用程序我应该做的任何帮助也将非常感激。
锻炼对象类
import Foundation
class Workout {
let workoutName : String
let workoutDescription : String
let numberOfSets : Int
let numberOfReps : Int
init(name : String, description : String, sets : Int, reps : Int) {
workoutName = name
workoutDescription = description
numberOfSets = sets
numberOfReps = reps
}
}
WorkoutList类
import Foundation
class WorkoutList {
let workoutArray : [Workout] = []
}
答案 0 :(得分:0)
继承这个类不是你想要做的。一个简单的解决方法是让workoutArray
成为一个静态变量,这样任何类都可以在任何给定的时间访问它。
static var workoutArray : [Workout] = []
这就是为什么继承该类不起作用的原因。当OverViewViewController加载到应用程序时,它会创建类OverViewViewController
的新实例,并且由于它继承了NewWorkoutViewController
,它还会创建NewWorkoutViewController
类的新实例。您有两个不同的NewWorkoutViewController
实例,更改其中一个实例中的变量不会更改该类的任何其他实例。但是,您正在寻找静态变量。可以从任何类中随时更改和访问该数组,您甚至不需要继承。无论您是workoutArray
静态还是workoutArrayList
静态,都可以使用。
如果您有任何其他问题,请随时发表评论。