2015-11-01 5 views
1

Здесь я попытался получить данные из моего URL, используемого base64, shaa256 для авторизации заголовка, и я просто попытался отобразить его в консоли. Это хорошо работает. Но мне нужно преобразовать в NSDictionary и отобразить на мой UICollectionView. И мои данные имеют 3 sections с разными данными. Каждый раздел имеет 12 - 20 файлов.Как отобразить данные json-файла в UICollectionView

Так что мой вопрос, являются:

  1. Как конвертировать мой URL в JSON в NSDictionary?
  2. Hoe для отображения с 3 разделами & в каждой секции должно быть от 12 до 20 файлов данных?
  3. я использовал только этот код в моем viewdidload получить data.does мне нужно, чтобы добавить 1.Connection did receive response 2.Connection did receive data 3.connection didFailWithError 4.connectionDidFinishLoading в мой код или не хотят эти 4 метода, чтобы добавить в свой код

Вот мой код:

Я использую, чтобы вставить свой код, приведенный ниже, чтобы мой выше код после

NSString *str = [[NSString alloc] initWithData:returnData 
             encoding:NSUTF8StringEncoding]; 

NSError * error; 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:str 
                options: NSJSONReadingMutableContainers 
                 error: &error]; 

NSLog(@"%@",json); 

Но din't работы.Если любой полезный ответ на мой вопрос 3 очень полезно для me.i новичок в ИОС .help me out.Thank s заранее!

ответ

1

Данные, скорее всего, будут JSON, а не обычный текст? Таким образом, преобразовывать ответ прямо в NSDictionary:

// show loading indicators when you are fetching data 
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
    // hide loading indicators when you received a response 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 

    if (connectionError) { 
     // Handle error 
    } else { 
     NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 
     NSLog(@"jsonResults: %@", jsonResults); 
     // reload your views 
     // [self.myCollectionView reloadData]; 
    } 
}]; 

Чтобы сделать CollectionView с 3-х секций вы должны иметь NSArray, содержащий 3 секции, каждая из этих 3-х массивов будет содержать 12-20 словарей с ключами и значениями которые будут заполнять каждую ячейку.

NSArray *sectionOne = @[@{@"Section":@"1", @"Object":@"1"}, @{@"Section":@"1", @"Object":@"2"}]; 
NSArray *sectionTwo = @[@{@"Section":@"2", @"Object":@"1"}, @{@"Section":@"2", @"Object":@"2"}]; 
NSArray *sectionThree = @[@{@"Section":@"3", @"Object":@"1"}, @{@"Section":@"3", @"Object":@"2"}]; 
NSArray *collectionData = @[sectionOne, sectionTwo, sectionThree]; 

NSLog(@"collectionData: %@", collectionData); 
+0

да это работало для меня в console.But я новичок в Ios это очень первый project.By с помощью этого NSDictionary, как показывает его в коллекции view.I знать, чтобы создать коллекцию view.But очень исходной задачи чтобы создать ключ и значение только я прошу .. в любом учебнике или проектах, которые будут полезны .... – user5513630

+0

о моем 3 вопроса ?? ---- должен ли я использовать или не нужно – user5513630

+0

Нет, вам не нужно добавлять эти методы делегатов, если это необходимо? Но я бы предложил перейти от 'sendSynchronousRequest' к' sendAsynchronousRequest' и обработать ответ в блоке. Таким образом, вы все равно можете управлять данными и ошибками, и это будет в фоновом потоке. – emotality

Смежные вопросы