【问题标题】:How to display json file data to UICollectionView如何将 json 文件数据显示到 UICollectionView
【发布时间】:2015-11-01 21:35:43
【问题描述】:

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

所以我的问题是:

  1. 如何将我的 url 转换为 json 到 NSDictionary ?
  2. 锄头显示 3 个部分,每个部分应该有 12 到 20 个数据文件?
  3. 我在 viewdidload 中仅使用此代码来获取数据。我需要将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);

但它不起作用。如果我的 3 个问题的任何有用答案对我非常有用。我是 ios 新手。请帮助我。提前致谢!

【问题讨论】:

    标签: ios objective-c json uicollectionview nsdictionary


    【解决方案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 个部分,您需要一个包含 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);
    

    【讨论】:

    • 是的,这在控制台中对我有用。但我是 ios 新手,这是第一个项目。通过使用这个 NSDictionary 如何在集合视图中显示它。我知道创建集合视图。但是非常开始任务以创建关键和价值,我只是在问..是否有任何有用的教程或项目....
    • 关于我的 3 个问题?? ----我应该使用还是不需要
    • 不,除非必要,否则您不必添加这些委托方法?但我建议将sendSynchronousRequest 更改为sendAsynchronousRequest 并在一个块中处理响应。这样你仍然可以管理数据和错误,它将在后台线程上。
    • 我不熟悉那个sendSynchronousRequest to sendAsynchronousRequest。当我使用 NSDictionary 在我的集合视图中显示数据时会出现问题吗??
    • 不,会更好。我会更新我的答案。只需等待 5 分钟 :)
    猜你喜欢
    • 2020-11-18
    • 2019-09-13
    • 2022-06-30
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2019-02-22
    • 2021-12-12
    相关资源
    最近更新 更多