2017-05-08 11 views
-1

私のコードは、最初の配列が印刷されたときだけ印刷されます。印刷される配列のすべてのインデックスは同じ時間を持ちます。関数を呼び出した日時を表すように、コードを取得するにはどうすればよいですか。同じ日付と時刻が印刷されたアレイに表示され続けます

それは、ユーザーが番号20と30に入ったときに、出力されているとおり:

 
Date | 2017 May Sunday 20:43:55 | 30 

Date | 2017 May Sunday 20:43:55 | 20 

これはコードです:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var label: UILabel! 
    @IBOutlet var textField: UITextField! 

    var arrayOfInt = [Int]() 

    @IBAction func pressButton(_ sender: Any) { 
     if let text = textField.text, let number = Int(text) { 
      arrayOfInt.insert(number, at: 0) 
      label.text = arrayOfInt.map { "Date | \(Date.formattedNow) | \($0)" }.joined(separator:"\n\n") 
      UserDefaults.standard.set(arrayOfInt, forKey: "SavedStringArray") 
     } 
     else { 
      label.text = "Please Enter Number" 
     } 
    } 
} 

extension Date { 
    static var formattedNow: String = { 
     let now = Date() 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "yyyy MMM EEEE HH:mm:ss" 
     dateFormatter.timeZone = TimeZone(identifier: "EST") 
     return dateFormatter.string(from: now) 
    }() 
} 

答えて

0

あなたたちの問題は、二重、私は推測であり、 :

  • Date.formattedNowは、クロージャが実行されると1回設定されます。つまり、あなたのプログラムの生涯にわたって固定された文字列になります。
  • 実際に現在の日付(アクセス時)を使用しても、整数の配列全体がマッピングされるため、mapに渡されたクロージャが実行されるたびに、「非常に似た」日付が返されます"と"配列をマッピングするのに必要な数ミリ秒を加えたもの "となります。 「日付と時刻関数が呼び出されたとき表すように」やや曖昧であることを

注:

あなたが同じ日付を使用する場合(「今」関数が呼び出されたとき)のためにすべての数字は、あなたは単に、計算されたプロパティに閉鎖することによって初期化されているプロパティからformattedNowを変更する定数を定義し、mapに渡されたクロージャでこれを使用することができます:あなたが「今を知りたい場合は

... 
let now = Date.formattedNow 
label.text = arrayOfInt.map { "Date | \(now) | \($0)" }.joined(separator:"\n\n") 
... 

"それが追加されたときに各番号のために、あなたはその日付を数字と共に捨てる。

struct Entry 
{ 
    let number: Int 
    let date: Date 
} 

、代わりにvar arrayOfInt = [Int]()の代わりに、あなたは、エントリ挿入回数挿入var entries = [Entry]()持っている:entries.insert(Entry(number: number, date: Date()), at: 0)をこのように。もちろん、これはUserDefaultsに少し複雑に格納されますが、entries.map { [$0.number, $0.date] }のようなものはプロパティリストに格納できる配列を生成します。

関連する問題