2015-06-16 2 views
0

Я не совсем уверен, что я ищу, так что я просто хочу, чтобы дать вам пример ...Как создать новые массивы с помощью swift?

Внутри App

Позволяет сказать, что я делаю приложение список покупок. В приложении вы можете создать столько списков покупок, сколько захотите, и в этих списках покупок вы можете добавить элементы в список.

Внутри код

Так в принципе, я пытаюсь создать новый массив элементов в массиве списков покупок. Как мне это сделать? Вот мой код, если у меня есть приложение для списка покупок. Но как я могу позволить пользователю создавать новые списки покупок (в коде, в новом массиве)?

//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», как создать новый массив содержимого этого списка покупок?

Надеюсь, я хорошо поработал, объяснив свой вопрос. Не стесняйтесь редактировать этот вопрос или оставлять комментарий, если вы что-то не понимаете.

+0

ли ваши списки покупок нужно иметь имя или нет? –

+0

ДА им нужно имя. –

ответ

2

Потому что ваши списки покупок являются массивами строк, и вы хотите поместить эти массивы в новый массив списков покупок, вам нужен массив массивы строк.

Как это:

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]] 

UPDATE:

Доступ к Данным, как это:

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

Как я могу получить доступ к яблокам в первом массиве? как println ((shoppingListsArray [0] [1] ")? –

1

Редактировать: ответить на новое требование.

Я думаю, что вы должны держать 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 
+0

Thats, если вы хотите добавить массив содержимого (добавьте новый элемент в список покупок), Мой вопрос: как создать новый массив содержимого для каждого списка покупок? Например, использование создаст новый список покупок, называемый «список покупок 4», а затем как создать новый массив, содержащий элементы в этом списке покупок4? –

5

Вы сказали, что это требование для ваших списков покупок, чтобы иметь имя. Вы можете использовать для этого 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) 
+0

Как создать новые списки, например list4? –

+0

@nachshonfertel' let list4 = ShoppingList (имя: «Список 4», пункты: [«любые», «пункты "])' –

+0

@nachshonfertel Или, 'shoppingListsArray.append (ShoppingList (имя:" Some name ", items: [" any "," items "]))' –

Смежные вопросы