2013-08-23 49 views
-1

我尝试动态地添加对象到NSArray。 0错误出现在XCode中。我不明白这个错误与循环和NSMutableArray中的AddObject

但是,IOS模拟器会生成错误并关闭。

我的代码的静态版本正常工作。

所以我不明白错误在哪里。

静态版本:

candyArray = [NSArray arrayWithObjects: 
       [Candy candyOfCategory:@"chocolate" name:@"chocolate bar"], 
       [Candy candyOfCategory:@"chocolate" name:@"chocolate chip"], 
       [Candy candyOfCategory:@"chocolate" name:@"dark chocolate"], 
       [Candy candyOfCategory:@"hard" name:@"lollipop"], 
       [Candy candyOfCategory:@"hard" name:@"candy cane"], 
       [Candy candyOfCategory:@"hard" name:@"jaw breaker"], 
       [Candy candyOfCategory:@"other" name:@"caramel"], 
       [Candy candyOfCategory:@"other" name:@"sour chew"], 
       [Candy candyOfCategory:@"other" name:@"peanut butter cup"], 
       [Candy candyOfCategory:@"other" name:@"gummi bear"], nil]; 

动态版:

// get JSON data from URL 
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http:///?view=json"]]; 
NSURLResponse *resp = nil; 
NSError *error = nil; 
NSData *response = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &resp error: &error]; 
NSString *jsonString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; //your json string from URL request 

// PARSINF JSON VALUE 
NSDictionary *jsonDictionary = [jsonString JSONValue]; 
NSDictionary *players = [jsonDictionary objectForKey:@"user"]; 

// Creating mutablearray who will receive the inputs of json: 
NSMutableArray *nameInsert = [[NSMutableArray alloc] init]; 

for (NSDictionary *player in players) 
{ 
    NSString *item = [player objectForKey:@"name"]; 

    [nameInsert addObject: [Candy candyOfCategory:@"chocolate" name:item" ]]; 
} 

candyArray = nameInsert; 

如果循环中没有任何IOS模拟器的作品。

当然,应用程序中没有任何内容。

+4

你能至少发布错误? – WDUK

+1

''nameInsert addObject:[Candy candyOfCategory:@“chocolate”name:item“]];'最后一个报价是做什么的 - 是直接复制粘贴吗? – sjwarner

+0

您是否在'NSString'上使用了一个类别?'NSString'没有任何方法'JSONValue'! – HAS

回答

1

从你的代码,看来你期望players是字典的数组,因为你写

(for NSDictionary *player in players) 

但是,初始化players作为NSDictionary,而不是一个数组。你会需要它初始化一个数组来代替:

NSDictionary NSArray *players = [jsonDictionary objectForKey:@"user"];