我有一个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中删除“ cola”,我必须找到该对象的键。

NSString *key = [myDictionary allKeysForObject:@"cola"];
NSMutableArray *allArraysForKey = [myDictionary allObjectsForKey:key];
[allArraysForKey removeObject:@"cola"];
[myDictionary setObject:allArraysForKey forKey:key];


我不知道问题出在哪里? myDictionary allkeysforobject不显示“可乐”的密钥

最佳答案

对象@"cola"不是词典中的键。有一个包含对象@"cola"的数组,但是没有对象本身的实例。因此allKeysForObject:不返回任何内容。

您可能还需要注意[[myDictionary allValues] valueForKeyPath:...]allValues以未定义的顺序返回所有值。因此,由于任何不相关的更改,或者甚至由于没有任何更改,允许通话之间的净效果发生很大的变化,并且在设备或iOS版本之间不需要这种行为是恒定的。

一种更常规的方法是保存对象的简单数组,该对象将命名(例如“ cola”)和类型(“ food”或“ drink”)。您可以按类型排序以形成您的部分。

09-10 00:40
查看更多