Utworzono prostą strukturę o nazwie ShoppingList.Zmiana właściwości obiektu wewnątrz pętli w Swift
struct ShoppingList {
var shoppingListId :NSNumber
var title :String
var groceryItems :[GroceryItem]
init() {
self.title = ""
self.groceryItems = [GroceryItem]()
self.shoppingListId = NSNumber(integer: 0)
}
}
Następny stworzyłem ShoppingList tablicę takiego:
var shoppingLists = [ShoppingList]()
Potem pobrać listy zakupów itp Teraz iterację shoppingLists i zmienić tytuł, ale to nigdy nie aktualizuje właściwość tytuł .
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
Wierzę, że gdy uruchamiam pętlę, kopiuje ona według wartości i dlatego oryginalna tablica nigdy się nie zmienia. Jak mogę zmienić oryginalną tablicę za pomocą pętli For?
Dziękuję za zamieszczenie jasnego i zwięzłego pytania, odnowiłeś moją wiarę w programistów. – RyanR