【问题标题】:NSArray and NSDictionaryNSArray 和 NSDictionary
【发布时间】:2012-10-18 10:56:03
【问题描述】:

我有一个 NSDictionary,我必须将它添加到 NSArray。我该怎么做?

NSDictionary *row = [NSDictionary dictionaryWithObjectsAndKeys:
     [NSString stringWithFormat:@"%@",NSLocalizedString(@"no_favorites", nil)], @"Address", nil];

如果我使用:

    aFavorite = [row allValues];

按照建议,如果我打印它,我得到了:

(
"No favorites added"
)

我需要的是:

  (
    {
    Address = "No favorites added";
 }
 )

因为我会使用:

NSDictionary* dict = [aFavorite objectAtIndex:[indexPath row]];
 NSString *contentForThisRow = [dict objectForKey:@"Address"];

dict 值可以有 1 或 2 个键。

【问题讨论】:

  • 您的意思是要将 NSDictionary 转换为 NSArray?
  • 是的,就是我要找的

标签: objective-c nsarray nsdictionary


【解决方案1】:

要转换字典,您可以使用它的方法:

myArray = [[NSArray alloc] initWithArray:[myDic allValues]];

更新

当您想要添加 dic 以检索它并使用键检索值时,请使用 NSMutableArray ,如下所示:

NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:myDic];

然后只需使用以下命令检索 dic:

NSDictionary *myDic = [myArray objectAtIndex:indexPath.row];
NSString *value = [myDic objectForKey:@"myValue"];

【讨论】:

  • 然后添加它自己的 dic,而不是值或键,请参阅我的更新答案。
  • 我需要 NSArray,所以,我创建了一个 NSMutableArray 并从 NSMutableArray 生成我的 NSArray
  • 在 initWithArray 中没有任何意义:...只需使用 [myDic allValues]
【解决方案2】:

调用NSDictionaryallValues函数,它将返回所有值的NSArray

NSArray *array = [row allValues];

要获取键的 NSArray,请使用,

NSArray *array = [row allKeys];

参考链接:Apple Doc


这是一个带有一些字符串连接的基本编程逻辑。如果你想要“键值对”,那么你必须使用 NSDictionary。但如果你想要Address = Something,那么将所有键放在一个数组中,然后将所有值放在不同的数组中,然后在单个循环中循环它们。

【讨论】:

    【解决方案3】:

    如果您想访问所有值然后尝试它:- NSArray * values = [字典 allValues];

    如果访问所有密钥,请尝试:- NSArray * values = [dict allValues];

    【讨论】:

      【解决方案4】:
      NSDictionary *row = [NSDictionary dictionaryWithObjectsAndKeys:
      [NSString stringWithFormat:@"%@",NSLocalizedString(@"no_favorites", nil)], @"Address", nil];
      [aFavorite addObject:row];
      

      然后:

      NSDictionary* dict = [aFavorite objectAtIndex:[indexPath row]];
      NSString *contentForThisRow = [dict objectForKey:@"Address"];
      

      我有一个 NSDictionary,我必须将它添加到一个 NSArray

      如果您的意思是在运行时将 NSDictionary 添加到 NSArray,很抱歉您不能这样做,NSArray 是不可变的。

      【讨论】:

      • addObject 方法适用于 NSMutableArray,我需要一个 NSArray
      猜你喜欢
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多