NSMutableArray objectAtIndex:不工作

时间:2013-10-18 12:18:55

标签: iphone ios objective-c nsmutablearray

我是ios开发的新手。我以字典的形式从我的Web服务获取某些数据(其中包含一个变量和一个项目字典数组)。我成功地将数据存储在userdefaults中。

我使用for循环为每个项目字典中的特定键形成一个名为img_urls的新数组。

我的问题是:当我使用[img_urls objectAtIndex:0]访问此数组时,我得到完整的数组作为输出,而不是仅在第0个索引获取值。并给[img_urls objectAtIndex:1]给我NSRangeException。

这是我的代码:

NSDictionary *restData=[[NSUserDefaults standardUserDefaults]valueForKey:@"Rest data"];
totalResult=[[restData valueForKey:@"totalResult"]intValue];
restaurants=[[NSArray alloc] initWithObjects:[restData valueForKey:@"restaurants"], nil ];
for(NSDictionary *item in restaurants)
{


    [img_urls addObject:[item valueForKey:@"profileImage"]];
}
  NSLog(@"REST NAMES%@",[img_urls objectAtIndex:0]);

任何帮助将不胜感激。提前谢谢!

3 个答案:

答案 0 :(得分:0)

更改如下方法: -

[[NSArray alloc] initWithObjects:[restData valueForKey:@"restaurants"], nil ]

//在下面修改

[[NSArray alloc] initWithArray:[restData valueForKey:@"restaurants"]]

答案 1 :(得分:0)

首先,你有没有分析过数组,请尝试以下方法: -

img_urls=[NSMutableArray array];
NSDictionary *restData=[[NSUserDefaults standardUserDefaults]valueForKey:@"Rest data"];
totalResult=[[restData valueForKey:@"totalResult"]intValue];
restaurants=[[NSArray alloc] initWithObjects:[restData valueForKey:@"restaurants"], nil ];
for(NSDictionary *item in restaurants)
{


    [img_urls addObject:[item valueForKey:@"profileImage"]];
}
//Check first array count
if ([img_urls count] > 0)
{
  NSLog(@"REST NAMES%@",[img_urls objectAtIndex:0]);
}

答案 2 :(得分:0)

您正在初始化时将数组([restData valueForKey:@“restaurants”])作为对象数组的对象,这样您在使用objectAtIndex:0

获取时将获得整个数组
NSDictionary *restData=[[NSUserDefaults standardUserDefaults]valueForKey:@"Rest data"];
totalResult=[[restData valueForKey:@"totalResult"]intValue];
restaurants=[[NSArray alloc] initWithArray:[restData valueForKey:@"restaurants"]];
for(NSDictionary *item in restaurants)
{


    [img_urls addObject:[item valueForKey:@"profileImage"]];
}
  NSLog(@"REST NAMES%@",[img_urls objectAtIndex:0]);
相关问题