ios - 获取对象 NSDictionary 的键

标签 ios objective-c

我有一个包含 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/

相关文章:

objective-c - 将 UIButton 放入 UITableView 中

ios - 非阻塞 UIView 动画缩放

ios - 监控 UITableViewCell 在屏幕上显示多长时间

objective-c - MKMapView 中的注释未显示标题

android - Facebook SDK for Unity v7.0.3 FB.Init 委托(delegate)从不调用

ios - 两个同时 ScrollView 表现得很奇怪

ios - iOS 中的自定义 UIButton,在文本顶部居中图像

ios - 在 VC 堆栈中快速移动 UIButton

ios - 点击后退按钮时如何在 UITableView 中保留更新的数据

iphone - Facebook Connect 发布对话框文本?