如何使用 swift 创建新数组?

How to i create new arrays using swift?

我不太确定我在找什么,所以我只是给你举个例子...

应用程序内部

假设我正在制作一个购物清单应用程序。在应用程序中,您可以创建任意数量的购物清单,并且在这些购物清单中,您可以将项目添加到清单中。

内码

基本上,我正在尝试在一组购物清单中创建一组新的项目。我怎么做?如果我有一套购物清单应用程序,这是我的代码。但是我如何允许用户创建新的购物清单(在代码中,一个新数组)?

//users can keep on appending this array every time they create a shopping list

var shoppingListsArray:[String] = ["Shopping list 1", "Shopping list 2", "Shopping list 3"]

var contentsOfShoppingList1 = ["Item1", "Item2", "Item3"]

var contentsOfShoppingList2 = ["Item1", "Item2", "Item3"]

var contentsOfShoppingList3 = ["Item1", "Item2", "Item3"]

当用户创建新的购物清单并附加 'shoppingListsArray' 时,我该如何创建一个包含该购物清单内容的新数组?

我希望我很好地解释了我的问题。如果您不明白,请随时编辑此问题或发表评论。

编辑:响应新要求。

我认为你应该将 shoppingListsArray 保留为 Dictionary:

var shoppingListsArray = Dictionary<String, [String]>()

var contentsOfShoppingList1 = ["Item 1", "Item 2", "Item 3"]
var contentsOfShoppingList2 = ["Item 1", "Item 2", "Item 3"]
var contentsOfShoppingList3 = ["Item 1", "Item 2", "Item 3"]

shoppingListsArray["Shopping List 1"] = contentsOfShoppingList1
shoppingListsArray["Shopping List 2"] = contentsOfShoppingList2
shoppingListsArray["Shopping List 3"] = contentsOfShoppingList3

// When user create new shopping list
var newShoppingList = ["Computer", "Monitor"]

shoppingListArray["Computer parts"] = newShoppingList

因为您的购物清单是字符串数组,而您想将这些数组放入一个新的购物清单数组中,所以您需要一个字符串数组数组。

像这样:

let contentsOfShoppingList1 = ["Bananas", "Apples", "Oranges"]
let contentsOfShoppingList2 = ["Eggs", "Bread", "Salt"]

var shoppingListsArray = [[String]]()

shoppingListsArray.append(contentsOfShoppingList1)
shoppingListsArray.append(contentsOfShoppingList2)

println(shoppingListsArray) // [[Bananas, Apples, Oranges], [Eggs, Bread, Salt]]

更新:

像这样访问数据:

let apples = shoppingListsArray[0][1] // "Apples"
let salt = shoppingListsArray[1][2] // "Salt"

您提到您的购物清单必须有一个名称。您可以为此使用 NSDictionary,但是所有的购物清单都必须具有唯一的名称。

最简单、最灵活的方法是创建一个 ShoppingList 结构来保存列表的名称和列表中项目的数组。然后,您可以使 shoppingListsArray 成为一个 ShoppingList 结构数组。

这是一个小例子:

struct ShoppingList {
    let name: String
    let items: [String]
}

let list1 = ShoppingList(name: "List 1", items: ["Item 1", "Item 2", "Item 3"])
let list2 = ShoppingList(name: "List 2", items: ["Item 1", "Item 2", "Item 3"])
let list3 = ShoppingList(name: "List 3", items: ["Item 1", "Item 2", "Item 3"])
var shoppingListsArray = [list1, list2, list3]

如果您想访问第二个购物清单中的第二个项目,您可以使用此代码:

let item = shoppingListsArray[1].items[1]

如果您想访问第二个购物清单的名称,您可以使用此代码:

let name = shoppingListsArray[1].name

如果你以后想在数组中添加另一个购物清单,只需制作另一个清单并像这样附加它:

let anotherList = ShoppingList(name: "foo shopping list", items: ["foo", "bar", "baz"])
shoppingListsArray.append(anotherShoppingList)