获取对象NSDictionary的密钥

时间:2016-01-14 23:26:52

标签: ios objective-c

我有一个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"

的关键字

1 个答案:

答案 0 :(得分:1)

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

您可能还需要小心[[myDictionary allValues] valueForKeyPath:...]allValues以未定义的顺序返回所有值。因此,由于任何无关的更改,甚至由于没有任何变化,允许您的呼叫的净效应在呼叫之间大量改变,并且该设备或iOS版本之间不需要保持该行为。

更传统的方法是保存物体的普通阵列,这些物体会命名一个名称(例如'可乐')和一种类型('食物'或'饮料& #39)。您可以对类型进行排序以形成您的部分。