我有一个NSMutableDictionary,它包含NSArrays。例如:
NSArray *food = [NSArray arrayWithObjects:@"pasta", @"bread", nil];
[myDictionary setObject:food forKey:@"toEat"];
NSArray *drink = [NSArray arrayWithObjects:@"sprite", @"cola", nil];
[myDictionary setObject:drink forKey:@"toDrink"];
要访问所有值,我使用代码:
NSArray *allValues = [[myDictionary allValues] valueForKeyPath:@"@unionOfArrays.self"];
有没有办法删除一个特定的对象?例如,删除"可乐"从UITableView我必须找到这个对象的密钥。
NSString *key = [myDictionary allKeysForObject:@"cola"];
NSMutableArray *allArraysForKey = [myDictionary allObjectsForKey:key];
[allArraysForKey removeObject:@"cola"];
[myDictionary setObject:allArraysForKey forKey:key];
我无法弄清问题在哪里? myDictionary allkeysforobject没有显示" cola"
的关键字答案 0 :(得分:1)
对象@"cola"
不是字典中的键。有一个包含对象@"cola"
的数组,但没有对象本身的实例。因此allKeysForObject:
不会返回任何内容。
您可能还需要小心[[myDictionary allValues] valueForKeyPath:...]
。 allValues
以未定义的顺序返回所有值。因此,由于任何无关的更改,甚至由于没有任何变化,允许您的呼叫的净效应在呼叫之间大量改变,并且该设备或iOS版本之间不需要保持该行为。
更传统的方法是保存物体的普通阵列,这些物体会命名一个名称(例如'可乐')和一种类型('食物'或'饮料& #39)。您可以对类型进行排序以形成您的部分。