如何命名结构实例变量的内容 - Swift

How to name an instance of a struct the contents of a variable - Swift

几乎肯定有更好的方法来做到这一点,我很想知道,但我不能在问题中用短语表达它,所以基本上这是我的问题:

我正在创建一个显示项目列表的应用程序(在 table 视图中),其中包含项目附带的各种数据(String Int Date 等)。我决定存储此数据的最佳方式是在结构中,因为它允许我存储丢失的不同类型的数据以及 运行 进程。

问题是理论上我想在列表中拥有无限数量的项目,因此我需要在不预先确定每个实例的名称的情况下丢失 Item 结构的实例。

然后我会将这些实例名称存储在一个数组中,以便它们可以在 table 视图中列出。

我完全被困在这一点上我花了几个小时寻找但我无法理解它我确信它非常简单,因为数百个应用程序必须需要这样做。我对任何事情都持开放态度,谢谢。

目前,我有一个结构:

struct Item() {
    var data1: String
    var data2: String // (But Should be Int)
    var data3: String

    func setDate() {
        // code
    }

    func returnDate() {
        // code
    }
}

然后在视图控制器中我有:

@IBAction func SubmitButton(_ sender: UIButton) {
    var textField1 = Item(data1: textField1.text!, data2: textFeild2.text!, data3: "Units")
    print(textField1.data1)
}

我不完全确定您的目标是什么,但我想最终目标是拥有一个 项目对象数组 ,然后可用于填充 UITableView???没有为此实例设置名称?

最简单的解决方案是创建一个 array 作为 Class Property 来存储所有空的项目,如下所示:

var items : [Item] = []

然后在 viewDidLoad() 中,您可以调用一个函数,用所有可用的项目填充项目数组。 然后可以使用此项目数组来填充 UITableView.

第二部分: 您获得了创建新项目的 IBAction。我想这应该是在现有项目中添加一个新项目。

您可以使用

将此新项目添加到现有项目数组中
items.append(Item(<parameters>))

并且不要忘记重新加载 UITableView 以包含新数据。

tableView.reloadData()