-1

我有以下代码:

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"]]}

与: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。在调试区域显示没有错误

你知道出了什么问题吗?谢谢!

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

4

2 回答 2

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]];
}
于 2012-08-21T13:26:31.757 回答
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 是一个数组数组

于 2012-08-22T08:09:41.853 回答