NSDictionary到NSArray?

phx*_*phx 34 objective-c nsdictionary nsarray

我有一个NSDictionary看起来像:

{
"Item1" = 2.4;
"Item2" = 5.5;
"Item3" = 15.6;
}
Run Code Online (Sandbox Code Playgroud)

NSDictionary在表格视图中使用此项目,我必须将其转移到a NSArray,我是对的吗?

所以我尝试:

NSDictionary *dict = [myDict objectForKey:@"items"];

for (id item in dict) {
    [_myArray addObject:[dict objectForKey:item]];
}
Run Code Online (Sandbox Code Playgroud)

但_myArray一直空着?我究竟做错了什么?

Dav*_*ong 222

NSArray * values = [dictionary allValues];
Run Code Online (Sandbox Code Playgroud)

  • 如果您阅读文档,`allValues`将返回通过为字典中的每个键调用`objectForKey:`返回的每个对象. (26认同)
  • 如果你想添加更多的对象,你需要使它像NSMutableArray一样:`NSMutableArray*values = [[NSMutableArray alloc] initWithArray:[dictionary allValues]];` (3认同)
  • 为什么这不是公认的答案?另一个答案甚至没有尝试回答这个问题,只是说"你没有必要!祝你好运!" (2认同)

Nik*_*esh 43

NSArray *keys = [dictionary allKeys];
NSArray *values = [dictionary allValues];
Run Code Online (Sandbox Code Playgroud)


Six*_*tto 29

撇开您发布的代码的技术问题,您问这个:

要在表格视图中使用此词典项目,我必须将其转移到NSArray,我是对的吗?

答案是:不一定.没有什么内在的机器UITableView,UITableViewDataSource或者UITableViewDelegate这意味着你的数据必须是一个数组.您需要实现各种方法来告诉系统表中有多少行,以及每行中显示的数据.许多人发现使用像数组这样的有序数据结构来回答这些问题会更加自然和有效.但是没有要求你这样做.如果您可以使用您开始使用的字典编写代码来实现这些方法,请随意!

  • 我知道这是一个老帖子,但先生,你猜对了! (2认同)

Ran*_*Guy 5

您可以在字典中创建所有对象的数组,然后将其用作TableView的数据源.

NSArray *aValuesArray = [yourDict allValues];
Run Code Online (Sandbox Code Playgroud)