iPhone JSON - итерация NSArray и получение значений - PullRequest
1 голос
/ 12 декабря 2010

Я пытался решить это сам (я всю ночь не спал, стуча головой об стену), но, надеюсь, кто-то здесь может мне помочь.

Я использовал этот учебник для подключения к моему JSONисточник данных (http://www.mobileorchard.com/tutorial-json-over-http-on-the-iphone/) и он работает нормально, но теперь я хотел бы получить значения (по ключу объекта, я думаю).

Мои данные json выглядят следующим образом: [{"Id": "1", "Имя ":" Ричард "," NameOfFile ":" 1.jpg "}, {" Id ":" 395 "," Имя ":" Alex "," NameOfFile ":" 390.jpg "}]

И код, который я использую для подключения к нему, выглядит следующим образом.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    [connection release];

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    [responseData release];

    SBJSON *json = [[SBJSON new] autorelease];
    NSArray *myArray = [json objectWithString:responseString error:nil];
    [responseString release];   

    for (int i = 0; i < [myArray count]; i++)
    {
        for(int colIndex = 0; colIndex < 5; colIndex++) 
        {
            UIImage * myimage = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: @"http://www.goweruk.com/Images/Uploaded/220/873.jpg"]]];
            UIImageView *myimageview = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f,50.0f, 50.0f)];
            [myimageview setImage:myimage];

            CGRect frameRect = myimageview.frame;
            frameRect.origin.x = (frameRect.size.width + 14) * colIndex;
            frameRect.origin.y = (frameRect.size.height + 14) * i;
            myimageview.frame = frameRect;

            [self.view addSubview:myimageview];
            [myimageview release];
        }
    }
}

Так что я хотел бы сделать внутри этого цикла, получить значение элемента. Кто-нибудь знает, как ясделать это?

1 Ответ

8 голосов
/ 12 декабря 2010

То, что NSArray - это массив NSDictionary объектов, поэтому сначала вам нужно получить словарь с нужным индексом, используя objectAtIndex:, а затем выполнить итерацию по словарю, используя for..in:

for (int i = 0; i < [myArray count]; i++)
{
    NSDictionary *dict = [myArray objectAtIndex:i];
    for(NSString *key in dict) {
       //do something with key or [dict objectForKey:key];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...