从数组数组中提取数据

时间:2012-08-21 13:20:06

标签: objective-c

我有以下代码:

NSString *movies = [[NSString alloc] initWithData:webData7 encoding:NSUTF8StringEncoding];
NSLog(@"movies: %@", movies);
array_webdata = [parsedata objectWithString:movies error:nil];
userMovies = [array_webdata valueForKey:@"movies"];
NSLog(@"userMovies: %@", userMovies);
NSMutableArray *arrayCodes = [userMovies valueForKey:@"rtid"];
NSLog(@"arrayCodes: %@", arrayCodes);

在第一行中我保存了以下电影:

电影:

  

{ “电影”:[[ “RTID”, “770672122”],[ “RTID”, “771268706”],[ “RTID”, “771240265”],[ “RTID”, “9377”]]}

with:userMovies = [array_webdata valueForKey:@"movies"];我存储在userMovies中:

userMovies: (
        rtid,
        770672122
    ),
        (
        rtid,
        771268706
    ),
        (
        rtid,
        771240265
    ),
        (
        rtid,
        9377
    )

从这里我想提取数字以创建另一个数组,如:

  

代码:(770672122,771268706,771240265,9377)

但是有了以下行,执行崩溃了:

NSMutableArray *arrayCodes = [userMovies valueForKey:@"rtid"];

错误是EXC_BAD_ACCESS。在调试区域显示没有错误

你知道什么是错的吗? 谢谢!

我已编辑问题以使其更易理解

2 个答案:

答案 0 :(得分:1)

您拥有的代码显然不会起作用,因为您正在为可变数组分配一个数字(或int或某种类型)。你不能这样做。您需要将它们添加到数组中,因为它们将包含在阵列中,这些数字不是数组......

你是如何从JSON获得它的?您的数组可能是NSDictionary的数组,因此您需要执行以下操作:

for (NSDictionary *aDictionary in userMovies)
{
    [arrayCodes addObject: [aDictionary valueForKey:@"rtid"]];
}

您需要先了解数组中的内容。做:

NSLog(@"My array contains %@'s", [[userMovies valueForKey:@"rtid"] class]);

从那里,如果你得到NSDictionary使用上面的代码,如果你得到一个数组,你将不得不循环遍历数组:

for (NSArray *anArray in userMovies)
{
    [arrayCodes addObject: [anArray objectAtIndex:1]];
}

答案 1 :(得分:0)

解决!

我删除了最后两行代码:

NSMutableArray *arrayCodes = [userMovies valueForKey:@"rtid"];
NSLog(@"arrayCodes: %@", arrayCodes);

并添加以下内容

NSMutableArray *moviesCodes = [[NSMutableArray alloc] init];
for (int counter = 0; counter<[userMovies count]; counter++){
   [moviesCodes addObject:[[userMovies objectAtIndex:counter] objectAtIndex:1]];
}

有了这个,我已经将所有id存储在名为moviesCodes的数组中。问题是userMovies是一个数组数组