2017-05-08 31 views
0

我在这里有代码打印出数组。我添加了一个扩展文件来打印每个数组条目的时间和日期。但问题是扩展文件不刷新。所以第一个数组的日期和时间是打印在所有数组上的时间和日期。我只想在打印数组时匹配日期和时间。在不刷新时调用扩展文件(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) 
}()} 

回答

0

如果你要存储阵列中的每个数字的创建时间,您将需要使用的元组的排列和修改扩展名是一个实例方法并在自我而不是现在的日期工作。

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

以上代码打印

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

睡眠5只需要在游乐场的测试,你可以省略,在您的实际代码。

+0

我试过了。错误消息状态扩展可能包含未存储的属性。 –

+0

请显示确切的错误消息,因为这是一个计算属性,哪些扩展名确实可以存储。 –

+0

我在我的问题中添加了一张包含错误信息的图片。我在这张图片中所做的是从“static var formattedNow:String = {” –