如何将 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的主要内容,如果未能解决你的问题,请参考以下文章