我有一個由許多小陣列組成的oldArray。 現在我想採取這些對象之一(一個小陣列),修改它,然後(如果用戶點擊一個按鈕)替換它。 要做到這一點:iOS:將一個對象從oldArray複製到newArray
步驟1 - 我做了一個新的數組,其中我用這個小對象初始化newArray。
openedCartProduct = nil;
openedCartProduct = [NSMutableArray array];
[openedCartProduct addObjectsFromArray: [SharedAppDelegate.myEngine.shoppingCart objectAtIndex:indexPath.row]];
第2步 - 修改數組。
[[openedCartProduct objectAtIndex:0] setObject:[NSNumber numberWithFloat:[inputRabatLabel.text floatValue]] forKey:kRABAT_KEY];
第3步 - 替換oldArray中的對象。
在步驟2中,即使在替換對象之前,修改也在oldArray中發生。我在這裏錯過了什麼嗎?
在此先感謝你們! :)
編輯: 修改的對象是一個小型數組,包括我正在修改索引0的NSMutableDictionary。
編輯 似乎我們需要一個深度拷貝在這裏。我發現了一個解決方案,是一個黑客攻擊的,但是,但做工精細,並且很簡單:
openedCartProduct = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:[SharedAppDelegate.myEngine.shoppingCart objectAtIndex:indexPath.row]]];
第二步對數組沒有意義。 setObject:forKey:是一個NSMutableDictionary方法。 – ahwulf
對象(小數組)中有兩個對象。索引0處的那個是一個NSMutableDictionary,我爲其中一個鍵設置了一個特定的值。 –
嘗試使用arrayWithArray而不是addObjectsFromArray。 – satheeshwaran