将日期保存在标签中

时间:2019-01-15 16:19:40

标签: swift save label

在将日期和一天中的时间保存在标签中时出现问题。我有一个TodoList,当我添加一些东西时,它会显示您执行操作的日期和时间。我要做的就是保存它。为了保存,我尝试使用用户默认值,但是我总是拥有日期和时间,而不是我的日期。我想我做错了。有什么建议可以保存日期吗?

@IBOutlet weak var Data: UILabel!

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    Data.text = String(describing: DateFormatter())

    let dataFormatter = DateFormatter()
    dataFormatter.dateFormat = "dd/MM/yy H:mm a"
    Data.text = dataFormatter.string(from: .init())

    UserDefaults.standard.setValue(Data.text!, forKey: "Data")
    Data!.text=UserDefaults.standard.string(forKey: "Data")
}

2 个答案:

答案 0 :(得分:0)

好的,据我所知,您有一个待办事项列表,您正试图节省每个项目的编辑时间。

UserDefaults 是一个键值对,从我看来,您正在尝试对所有单元格使用相同的键,这将意味着它们将相互覆盖。

还尝试在每次使用前覆盖现有的值,这是您想要的正确行为吗?

答案 1 :(得分:0)

我将在第一部分中首先介绍一些应用程序开发基础知识,然后在第二部分中回答您的问题,最后说明为什么我从第一部分介绍了应用程序开发基础知识。

域模型

通常在制作应用程序时,首先定义模型。

  

模型对象将特定问题域所需的数据分组   或您要构建的一种解决方案。它们由代表类型属性的属性组成,有时它们具有更新和修改其自身属性的方法。

     

在大多数情况下,您将通过定义新的结构或类来创建模型对象。通常,您将在新的Swift文件中定义结构或类。

这是App Development with Swift的单元4.3模型视图控制器的摘录-Apple教育。如果您是应用程序开发的新手,那将是一本非常有趣的书。

应用程序中待办事项的模型可能类似于:

struct TodoItem: Codable {
  let content: String
  let creationDate: Date
  init(with string: String) {
    content = string
    creationDate = Date()
  }
}

保存带有创建日期的待办事项

现在要回答有关如何保存具有相应创建日期的不同问题的问题,这是将这些问题也存储在模型中的一种好习惯。例如,您可以创建一个新的数组来存储所有不同的TodoItem(如下例中的TodoItem重复使用):

var todoList = [TodoItem]()

用户创建新项目时:使用{p>将TodoItem添加到todoList

todoLists.append(TodoItem(with: someUserContent))

动机

  • 通过将“模型”定义为TodoItem结构和todoList,您现在可以确保每次访问项目列表时,相应的creationDate将是创建日期的确切日期。该项目。这是因为我们将creationDate声明为常量。
  • 通过使TodoItem结构与Codable一致,您现在可以使用Nirma/Default之类的库来轻松保存todoList和从用户默认值中检索dateLabel.text = dateFormatter.string(from: todoList[itemIndex].creationDate)
  • 由于您现在有了一个包含所有todoItems的数组,因此使用以下命令很容易在标签中显示这些日期:

i