2017-05-08 2 views
0

Ich habe hier Code, der Arrays ausdruckt. Ich habe eine Erweiterungsdatei hinzugefügt, um die Uhrzeit und das Datum jedes Array-Eintrags auszudrucken. Das Problem ist jedoch, dass die Erweiterungsdatei nicht aktualisiert wird. Das Datum und die Uhrzeit des ersten Arrays sind also die Uhrzeit und das Datum, die auf allen Arrays ausgegeben werden. Ich möchte nur, dass Datum und Uhrzeit übereinstimmen, wenn das Array gedruckt wird.Extension-Datei beim Aufruf nicht aktualisiert (swift3)

enter image description here

enter image description here

import UIKit 
    class ViewController: UIViewController { 
    @IBOutlet var entry: UILabel! 
    var arrayOfInt = [Int]() 

     @IBOutlet var label: UITextField! 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    } 

    @IBAction func enterScore(_ sender: Any) { 

    if let text = label.text { 
     if let number = Int(text){ 
      arrayOfInt.insert(number, at: 0) 

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

      }} 

     else { 
     entry.text = "Please Enter Number" 

     }}} 

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

Antwort

0

Wenn Sie die Erstellungszeit jeder Zahl im Array speichern möchten, müssen Sie eine Reihe von Tupeln und ändern Sie die Erweiterung verwenden eine Instanzmethode sein und arbeite an sich selbst, nicht am aktuellen Datum.

var numbersWithCreationDates = [(Int,Date)]() 
numbersWithCreationDates.append((2,Date())) 
sleep(5) 
numbersWithCreationDates.append((5,Date())) 

extension Date { 
    var estDate: String { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss" 
     dateFormatter.timeZone = TimeZone(identifier: "EST") 
     return dateFormatter.string(from: self) 
    } 
} 

for current in numbersWithCreationDates { 
    print("Date: \(current.1.estDate), number: \(current.0)") 
} 

Above Code druckt wird

Date: 05/09/2017 09:51:46, number: 2 
Date: 05/09/2017 09:51:51, number: 5 

Schlaf 5 für die Prüfung benötigt nur in Spielplatz, können Sie das in Ihrem aktuellen Code weglassen.

+0

Ich habe das versucht. Fehlernachrichtstatuserweiterungen können nicht gespeicherte Eigenschaften enthalten. –

+0

Bitte zeigen Sie die genaue Fehlermeldung an, da dies eine berechnete Eigenschaft ist, welche Erweiterungen tatsächlich speichern können. –

+0

Ich habe in meiner Frage ein Bild hinzugefügt, das die Fehlermeldung enthält. Alles, was ich in diesem Bild getan habe, war das Entfernen der statischen von "static var formatiertNach: String = {" –

Verwandte Themen