如何使用 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)
我不太确定我在找什么,所以我只是给你举个例子...
应用程序内部
假设我正在制作一个购物清单应用程序。在应用程序中,您可以创建任意数量的购物清单,并且在这些购物清单中,您可以将项目添加到清单中。
内码
基本上,我正在尝试在一组购物清单中创建一组新的项目。我怎么做?如果我有一套购物清单应用程序,这是我的代码。但是我如何允许用户创建新的购物清单(在代码中,一个新数组)?
//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)