У меня есть список. Он имеет несколько десятков ключей, каждый с элементами NSMutableArray:
...
<key>KeyName1</key>
<array>
<string>String1</string>
<string>String2</string>
<string>String3</string>
</array>
<key>KeyName2</key>
<array>
<string>String1</string>
<string>String2</string>
<string>String3</string>
</array>
...
Мне нужно удалить «String1» для всех ключей. Это функция, которую я написал:
void DeleteString(NSString *StringToDelete){
NSMutableDictionary *item=nil;
item = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
for (id obj in item){
NSString *removeThisObject=(NSString *)obj;
NSArray *ObjectArray = [item objectForKey:obj];
for (int i = 0; i< [ObjectArray count]; i++){
NSString *objectString = [ObjectArray objectAtIndex:i];
if([objectString isEqualToString:StringToDelete]){
NSLog(@"Remove This from Item Dictionary: %@",removeThisObject);
[item removeObjectForKey:obj];
}
}
}
[item writeToFile:filePath atomically: YES];
[item release];
}
Я подумал, что будет проще удалить только весь ключ, если он содержит значение, которое я не хочу, но строка: [item removeObjForKey: obj] выбрасывает EXC_BAD_ACCESS.
Это не имеет смысла для меня, потому что, насколько я понимаю, EXC_BAD_ACCESS означает, что сообщение было отправлено освобожденному методу.
Здесь «предмет» не выпущен, не так ли? У меня нет ошибок при отпускании 'item' всего на несколько строк ниже.
Что здесь происходит? Есть ли лучший способ удалить «String1» из обоих ключей?
Спасибо.