2013-11-21 3 views
-4

У меня есть файл в формате JSON ниже, и я сохранить его в массиве, делаяЦель c - как получить элементы динамически из NSArray?

NSArray *allFrames = [self.campaign.form.gameParams objectForKey:@"frames"]; 

То, что я хочу добиться, чтобы разместить все горизонтальные изображения из URL в представлении. Моя проблема заключается в том, что я хочу сделать это динамически, потому что количество элементов может измениться.

frames =  (
      { 
     horizontal = "http://mysite.co.uk/files/frames/5_h.png"; 
     vertical = "http://mysite.co.uk/files/frames/5_v.png"; 
    }, 

      { 
     horizontal = "http://mysite.co.uk/files/frames/6_h.png"; 
     vertical = "http://mysite.co.uk/files/frames/6_v.png"; 
    } 
      { 
     horizontal = "http://mysite.co.uk/files/frames/6_h.png"; 
     vertical = "http://mysite.co.uk/files/frames/6_v.png"; 
    } 
); 

То, что я не сделал до сих пор является для хранения адреса статически, как этот

NSDictionary *frames = allFrames[0]; 

    NSString * link1 = [frames objectForKey:@"horizontal"]; 


    NSDictionary *frames = allFrames[1]; 

    NSString * link2 = [frames objectForKey:@"horizontal"]; 


    NSDictionary *frames = allFrames[2]; 

    NSString * link3 = [frames objectForKey:@"horizontal"]; 

А затем преобразовать URLs в образы

UIImage *webImage1 = [UIImage imageWithData: 
            [NSData dataWithContentsOfURL: 
            [NSURL URLWithString:link1]]]; 
                   etc 

Любые идеи, как это сделать?

+3

перебрать массив ... – Wain

+0

вы можете объяснить? Я новичок в этом – chris

+2

Я просто не могу поверить, что Google не придумал что-то полезное. Этот вопрос повторяется много ... –

ответ

1

Что-то вроде этого?

NSMutableArray *imageArray = [[NSMutableArray alloc] init]; 

for (int i = 0; i < allFrames.count; i++) { 
    NSDictionary *dict = allFrames[i]; 
    NSString *link = dict[@"horizontal"]; 

    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:link]]]; 

    [imageArray addObject:image]; 
} 
0

горизонтальные данные могут быть отфильтрованы с использованием значенияForKey NSArray.

NSArray *horizontalImages = [frames valueForKey:@"horizontal"]; 

for(NSString *urlString in horizontalImages) 
{ 
UIImage *webImage1 = [UIImage imageWithData: 
            [NSData dataWithContentsOfURL: 
            [NSURL URLWithString: urlString]]]; 
} 
0
NSArray *dict = @[@{@"horizontal": @"http://mysite.co.uk/files/frames/5_h.png"}, @{@"horizontal": @"http://mysite.co.uk/files/frames/6_h.png"}, @{@"horizontal": @"http://mysite.co.uk/files/frames/6_h.png"}]; 
NSMutableArray *horizontalLinks = [NSMutableArray array]; 
[dict enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    [horizontalLinks addObject:[obj objectForKey:@"horizontal"]]; 
}]; 

NSLog(@"Horizontal Links: %@", horizontalLinks); 

Даст вам:

Horizontal Links: (
    "http://mysite.co.uk/files/frames/5_h.png", 
    "http://mysite.co.uk/files/frames/6_h.png", 
    "http://mysite.co.uk/files/frames/6_h.png" 
) 
Смежные вопросы