Alterando as propriedades do objeto para dentro do loop no Swift
Eu criei uma estrutura simples chamada ShoppingList.
struct ShoppingList {
var shoppingListId :NSNumber
var title :String
var groceryItems :[GroceryItem]
init() {
self.title = ""
self.groceryItems = [GroceryItem]()
self.shoppingListId = NSNumber(integer: 0)
}
}
Em seguida, criei uma matriz ShoppingList como esta:
var shoppingLists = [ShoppingList]()
Depois disso, busco as listas de compras etc. Agora, eu percorro as shoppingLists e altero o título, mas ele sempre atualiza a propriedade title.
for var shoppingList in shoppingLists {
let items = getGroceryItemsByShoppingList(shoppingList)
shoppingList.groceryItems = getGroceryItemsByShoppingList(shoppingList)
shoppingList.title = "BLAH" // copied by value
print("ShoppingList \(shoppingList.title) has \(shoppingList.groceryItems.count) items") // THIS PRINT BLAH
}
print("shoppingLists[0].groceryItems.count \(shoppingLists[0].groceryItems.count)") // THIS PRINTS THE ORIGINAL CONTENT
Acredito que quando estou executando o loop, ele está copiando por valor e, portanto, a matriz original nunca é alterada. Como posso alterar a matriz original usando o loop For?