【问题标题】:Data structure layout - NSMutableDictionary数据结构布局 - NSMutableDictionary
【发布时间】:2012-08-19 01:08:44
【问题描述】:

我正在寻找存储此类数据的最佳方式...

值 1 -项目 1 -项目 2 -项目 3 ... -项目 9 价值 2 -项目 1 ... -项目 9 价值 3 等等……

然后我想为给定的“值”选择项目的子集

NSMutableDictionary 是解决这个问题的方法吗?我在设置这个时有点困惑。 我一直在尝试这个......但它显然不太正确。感谢您的帮助。

NSMutableDictionary *dictionary;
[dictionary setObject:@"Entry1" forKey:@"1"];
[dictionary setObject:@"1-Entry2" forKey:@"1"];
[dictionary setObject:@"Entry2" forKey:@"2"];
[dictionary setObject:@"Entry3" forKey:@"3"];

NSLog(@"1: %@", [dictionary objectForKey:@"1"]);
NSLog(@"/n 2: %@", [dictionary objectForKey:@"1"]);

【问题讨论】:

  • 别忘了启动你的字典!使用NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
  • 我用的是arc,所以我不能那样做,对吧?
  • 字典中的每个键只能包含一项 - 您的数据中每个键是否包含多个条目?
  • ARC 与否,您必须在使用对象之前启动它们。与 ARC 的唯一区别在于谁持有该对象。如果你未能分配一个新对象,你的指针就没有指向任何东西。

标签: ios xcode nsarray nsmutabledictionary


【解决方案1】:

如果你想在一个键下有多个对象,你需要在字典中使用数组:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSArray arrayWithObjects:@"item1", @"item2", nil] forKey:@"Key1"];

等等。

【讨论】:

  • 我想说即使订单无关紧要,您仍然可以使用NSArray。如果您担心收藏中的所有值都是唯一的,请使用 NSSet
  • @nielsbot 好点。作为事后的想法,我补充说,将他的结构视为一种多图,但除非必要,否则推荐使用 NSSet 确实不是一个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2013-12-09
  • 2012-02-25
相关资源
最近更新 更多