2017-07-29 3 views
-1

ちょっと私は初めてのアプリを開発しており、何か助けが必要です。私のワークアウトトラッカーアプリには、以下の2つのクラスがあります。私は自分の迅速なファイルに接続された2つのビューコントローラを持っています。異なるビューコントローラを使用した配列データSwift

Heres my first view controller

基本的にはそれがないものですが、その後、「WorkoutList」クラスの配列に追加し、テキストフィールドとステッパーでデータを取り、「ワークアウト」のオブジェクトに変換します。

Array.countを印刷するprint文の設定があります。それはデバッグで正しい番号を表示しますが、私がビューを切り替えるとゼロにリセットされます。

@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) 
    } 

2番目のビューは、最初のビュークラスを継承しているが、私は「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の2つの異なるインスタンスがあります。これらのインスタンスのいずれかの変数を変更しても、そのクラスの他のインスタンスの変数は変更されません。静的変数は、しかし、あなたが探しているものです。配列はいつでも変更でき、どのクラスからでもアクセスできます。継承する必要はありません。 workoutArrayを静的にするか、workoutArrayListを静的にするかは関係ありません。

その他ご不明な点がございましたら、お気軽にコメントをお寄せください。

+0

ありがとうございました。私は迅速な水をテストしようとする新しい開発者です。 View Controllerを継承することは正しいとは思いませんでしたが、私が考えることができるすべてです。愚かな私は静的変数を忘れていました。 –

関連する問題