我創建了一個名爲ShoppingList的簡單結構。在Swift中更改For循環內的對象的屬性
struct ShoppingList {
var shoppingListId :NSNumber
var title :String
var groceryItems :[GroceryItem]
init() {
self.title = ""
self.groceryItems = [GroceryItem]()
self.shoppingListId = NSNumber(integer: 0)
}
}
接下來,我創建了一個ShoppingList陣列像這樣:
var shoppingLists = [ShoppingList]()
之後,我取的購物清單等。現在,我通過shoppingLists迭代並更改標題,但它不斷更新的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
我相信,當我運行循環它是通過值複製,因此原始數組永遠不會改變。如何使用For循環更改原始數組?
感謝您發佈一個清晰簡潔的問題,您已經重申了我對開發人員的信心。 – RyanR