NSArray 和 NSDictionary

Posted

技术标签:

【中文标题】NSArray 和 NSDictionary【英文标题】:NSArray and 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? 是的,就是我要找的 【参考方案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

以上是关于NSArray 和 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

从 NSArray 获取单个属性的 NSArray

NSArray 和 NSDictionary

多节 UITableView 和 NSArray

NSArray 和布尔值

NSPredicate 和 NSArray

NSArray 大小和可变性