0
我有一個plist。它有幾十個鍵,每個鍵的NSMutableArray項目:NSMutableDictionary removeObjectForKey爲未發佈的變種拋出EXC_BAD_ACCESS
...
<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];
}
我想它會更容易,如果它包含我不希望值只刪除整個密鑰,但行:[項目removeObjForKey:obj]拋出一個EXC_BAD_ACCESS。
這對我來說沒有意義,因爲據我瞭解,EXC_BAD_ACCESS表示消息已發送到已發佈的方法。
在這裏,'物品'是不是發佈了嗎?我沒有錯誤發佈「項目」,只是低了幾行。
這是怎麼回事?是否有更好的方法從兩個鍵中刪除「String1」?
謝謝。
我是個白癡。我不知道爲什麼我沒有看到。 – 2010-02-14 18:57:21