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

Posted

技术标签:

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

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

所以我的问题是:

    如何将我的 url 转换为 json 到 NSDictionary ? 锄头显示 3 个部分,每个部分应该有 12 到 20 个数据文件? 我在 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 新手。请帮助我。提前致谢!

【问题讨论】:

【参考方案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 分钟 :)

以上是关于如何将 json 文件数据显示到 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

如何将python dicts列表保存到具有垂直显示的json文件中[重复]

如何将 Json 数据显示到 Django 模板?

如何将 JSON 中的数据显示到 html 表中

如何将数据显示到数据表中(将json对象转换为对象)

如何使用 js 将数据设置为 JSON 文件?

如何在 Android JAVA 的列表视图中显示部分但不是全部 JSON 数据