我有一个包含 NSArray 的 NSMutableDictionary。例如:
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"
不是您字典中的键。有一个包含对象 @"cola"
的数组,但没有对象本身的实例。因此 allKeysForObject:
不返回任何内容。
您可能还需要小心使用 [[myDictionary allValues] valueForKeyPath:...]
。 allValues
以未定义的顺序返回所有值。因此,由于任何不相关的更改,甚至由于没有任何更改,您的调用的净效果可以在调用之间发生巨大变化,并且这种行为不需要在设备或 iOS 版本之间保持不变。
一种更传统的方法是用一个简单的数组来保存您的对象,它会命名一个名称(如“可乐”)和一个类型(“食物”或“饮料”)。您可以按类型排序以形成您的部分。
关于ios - 获取对象 NSDictionary 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801727/