У меня есть набор словарей, загруженных из plist (ниже), называемых arrayHistory.Удаление из 2 массивов словарей
<plist version="1.0">
<array>
<dict>
<key>item</key>
<string>1</string>
<key>result</key>
<string>8.1</string>
<key>date</key>
<date>2009-12-15T19:36:59Z</date>
</dict>
...
</array>
</plist>
отфильтровать этот массив на основе «» элемента таким образом, что второй массив, arrayHistoryDetail имеет такую же структуру, как и arrayHistory, но только содержит, например, 'item равно' 1 '. Эти подробные элементы успешно отображаются в таблицеView.
Затем я хочу выбрать элемент из таблицыView и удалить его из источника данных tableView, arrayHistoryDetail (строка 2 в приведенном ниже коде) - работает, тогда я хочу удалить элемент из самого tableView (строка 3 в коде ниже) - также работает.
Моя проблема заключается в том, что мне нужно, чтобы удалить его из исходного arrayHistory, поэтому я попытался следующее: создан временный словарь как Ивар:
NSMutableDictionary *tempDict;
@property (nonatomic, retain) NSMutableDictionary *tempDict;
Тогда мое мышление было сделать копию в строке 1 и удалите его из исходного массива в строке 4.
1 tempDict = [arrayHistoryDetail objectAtIndex: indexPath.row];
2 [arrayHistoryDetail removeObjectAtIndex: indexPath.row];
3 [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
4 [arrayHistory removeObject:tempDict];
Не работает. Может ли кто-нибудь помочь мне в правильном направлении. Я думаю, что tempDict является указателем и что removeObject нуждается в копии? Я не знаю.
Спасибо.
Не знаете, почему это сработало, но спасибо. Я думал, что был здесь раньше, единственной разницей является сохранение. Для уточнения я сначала сменил tempDict на временную переменную, затем работал, но не более чем на несколько удаленных ячеек, затем отладчик начал указывать на случайные строки, добавил сохранение и стал намного более стабильным. Я собираюсь проверить любые другие проблемы с памятью, которые могли бы внести вклад, потому что я действительно не понимаю, как это удержать, возможно, исправил его, но он сделал это, может быть, я должен просто отпустить его. Еще раз спасибо. –
В исходном коде, когда вы устанавливаете 'tempDict = ...', значение фактически не сохраняется. Вы устанавливаете тип свойства tempDict для сохранения, но вы обходите аксессуар свойства, поэтому он не имел никакого эффекта. Чтобы использовать исходный код как есть, вам придется использовать либо 'self.tempDict = ...', либо '[self setTempDict: ...]'. –