2017-07-29 64 views
-1

嘿家伙我正在开发我的第一个应用程序,需要一些帮助。我的锻炼跟踪器应用程序有两个类,您可以在下面找到。我有两个视图控制器连接到自己的swift文件。通过不同的视图控制器数组数据Swift

Heres my first view controller

基本上它是在文本字段和步进器需要的数据,并把它变成一个“锻炼”对象然后将其附加到“WorkoutList”级阵列。

我有打印语句设置打印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

你是如何切换视图??你的意思是推动newViewController? –

+0

[你如何在视图控制器和Swift中的其他对象之间共享数据?](https://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – Shades

回答

0

继承的类不是你想在这里做什么。一个简单的解决方法是让workoutArray成为一个静态变量,这样任何类都可以在任何给定的时间访问它。

static var workoutArray : [Workout] = []

这是为什么只是继承类不起作用。当OverViewViewController加载到应用程序时,它会创建类OverViewViewController的新实例,并且由于它继承了NewWorkoutViewController,它还创建了NewWorkoutViewController类的新实例。您有两个不同的NewWorkoutViewController实例,在其中一个实例中更改变量不会为该类的任何其他实例更改该实例。然而,一个静态变量是你正在寻找的。数组可以随时从任何类中更改和访问,您甚至不需要继承。无论你制作静态的workoutArray还是workoutArrayList,它都可以工作。

如果您有任何其他问题,请随时留下评论。

+0

谢谢你的帮助。我是一位试图快速测试水域的新开发者。继承视图控制器感觉不对,但我能想到的就是它。傻了,我忘了静态变量。 –

相关问题