2017-11-25 10 views
0

アプリでは、ユーザーが完了したジョブをタップすると、後で使用するためにタイムスタンプを収集します。 beforeafter こうすれば、ジョブが別のビューで完了したときに表示できます。日付変数が呼び出されたときに、それを再計算または更新するにはどうすればよいですか?

問題は、ユーザーが仕事をタップしたときに変数が変更されないことです。ここで

は、私はそれをプリントアウトする際のデータ構造体は次のようになります。

Moneypants.Points(user: "Father", itemName: "enter your top priority habit here", itemCategory: "daily habits", code: "C", valuePerTap: 24, itemDate: 1511579837.027503), 
Moneypants.Points(user: "Father", itemName: "pray & scripture study", itemCategory: "daily habits", code: "C", valuePerTap: 6, itemDate: 1511579837.027503), 
Moneypants.Points(user: "Father", itemName: "exercise (20 min)", itemCategory: "daily habits", code: "C", valuePerTap: 6, itemDate: 1511579837.027503), 
Moneypants.Points(user: "Father", itemName: "journal", itemCategory: "daily habits", code: "C", valuePerTap: 6, itemDate: 1511579837.027503), 
Moneypants.Points(user: "Father", itemName: "1-on-1 time with kid", itemCategory: "daily habits", code: "C", valuePerTap: 6, itemDate: 1511579837.027503) 

あなたが見ることができるように、各項目のタイムスタンプが同じである(それらは各々が「1511579837.027503」のタイムスタンプを表示)、にもかかわらず、私は各項目を別々に数秒間隔でタップしたという事実。

CODE

class UserVC: UIViewController { 
    var selectedDate: Date! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    selectedDate = Date() 

ユーザーが完全な仕事をマークするために、セルをタップすると、これが実行されるコードです:

let pointsArrayItem = Points(user: currentUserName, 
          itemName: (usersDailyJobs?[indexPath.row].name)!, 
          itemCategory: "daily jobs", 
          code: "C", 
          valuePerTap: dailyJobsPointValue, 
          itemDate: (selectedDate?.timeIntervalSince1970)!) 

Points.pointsArray.append(pointsArrayItem) 

私はそれは非常に簡単だと思うが、私はできませんそれを理解する。

+1

ビューがロードされるとき、 'selectedDate'の値を1回だけ設定します。おそらくタップで設定したいと思うでしょう。 '... itemDate:Date()。timeIntervalSince1970)' – BallpointBen

+1

あなたの質問には関係ありませんが、あなたのタブ項目のタイトルから '' my "'を取り除くべきです。 –

+0

はい、今日以外の日付に変更すると機能しません。ページを見ると、ユーザーは自分の仕事を記入する日を選択できることがわかります。 –

答えて

0

selectedDate変数を「更新」できるように、日付の新しい変数を作成しました。今度は私のクラスは変数var selectedDateNumberを持っていて、デフォルトの値でViewDidLoadメソッドに設定されています。

class UserVC: UIViewController { 
    ... 
    var selectedDateNumber: Int! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    selectedDateNumber = 0 
} 

私は、現在の日付/タイムスタンプとそれを「リフレッシュ」する必要があるときに、私は私の様々な機能の内部で、このコードを使用します。

selectedDate = Calendar.current.date(byAdding: .day, value: selectedDateNumber, to: Date()) 

データをこのようにリフレッシュすることによって、私は得ることができます前日のタイムスタンプを含め、私のプロジェクトの現在のタイムスタンプ。

関連する問題