我有以下代码:
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。在调试区域显示没有错误
你知道什么是错的吗? 谢谢!
我已编辑问题以使其更易理解
答案 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是一个数组数组