我是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]);
任何帮助将不胜感激。提前谢谢!
答案 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]);