如何将json文件数据显示到UICollectionView

时间:2015-11-01 21:35:44

标签: ios objective-c json uicollectionview nsdictionary

这里我试图从我的URL使用的base64中获取数据,shaa256用于授权Header,我只是试图在我的控制台中显示。它运作良好。但我需要转换为NSDictionary并显示给我的UICollectionView。我的数据有3个sections,数据不同。每个部分有12-20个文件。

所以我的问题是:

  1. 如何将我的网址转换为json转换为NSDictionary?
  2. 锄头显示3节&每个部分应该有12到20个数据文件吗?
  3. 我在viewdidload中仅使用此代码来获取数据。我需要将1.Connection did receive response 2.Connection did receive data 3.connection didFailWithError 4.connectionDidFinishLoading添加到我的代码中,或者不希望将这4种方法添加到我的代码中
  4. 这是我的代码:

    我用

    之后将以下代码插入上面的代码
    NSString *str = [[NSString alloc] initWithData:returnData 
                                          encoding:NSUTF8StringEncoding];
    
    NSError * error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:str 
                                                         options: NSJSONReadingMutableContainers 
                                                           error: &error];
    
    NSLog(@"%@",json);
    

    但是它没有用。如果对我的3个问题有任何有用的答案对我来说非常有用。我是ios的新手。帮助我。谢谢你提前!

1 个答案:

答案 0 :(得分: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];
    }
}];

要使具有3个部分的collectionView需要包含3个部分的NSArray,这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);