gpt4 book ai didi

objective-c - 在 iOS 上将 Wordpress JSON 解析为 UITableView

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:48:02 28 4
gpt4 key购买 nike

我正在尝试从 this URL 解析一个 JSON ,这是 Wordpress 的 JSON 输出。由于某种原因,UITableView 中没有输出。

这是我必须解析的代码。我确定我遗漏了一些东西,但我无法弄清楚如何在此代码中解析嵌套的 JSON。

ViewController.m:

    - (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"News";

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

NSURL *url = [NSURL URLWithString:@"http://www.karthikk.net/?json=1"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
data = [[NSMutableData alloc] init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
{
[data appendData:theData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

news = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];
[mainTableView reloadData];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
UIAlertView *errorView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"The download could not complete - please make sure you're connected to either 3G or Wi-Fi." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[errorView show];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

- (int)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [news count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MainCell"];

if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MainCell"];
}

cell.textLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"title"];
cell.detailTextLabel.text = [[news objectAtIndex:indexPath.row] objectForKey:@"date"];

return cell;
}

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
IBOutlet UITableView *mainTableView;

NSArray *news;
NSMutableData *data;
}

@end

请帮我解决这个问题。

非常感谢!我试过在 Stackoverflow 上引用多个线程,但都对我不起作用。

P.S.:我是 iOS 应用程序开发的新手。我正在使用 this Video tutorial弄乱代码。

最佳答案

我知道问题出在哪里了。 news 对象是一个 Dictionary,它有几个键值对,其中一个是 posts,它实际上包含要用来填充 TableView< 的 Array/

这是您的 JSON 响应的第一部分:

{"status":"ok","count":10,"count_total":662,"pages":67,"posts":[{"id":6176,"type":"post","slug":"how-to-save-any-photo-from-facebook-to-your-iphone-or-ipad-or-ipod-touch","url"...

当您在 JSON 响应中看到表示 Dictionary 的 { 时,[ 表示 ArrayTableViews 通常由 Array 填充。所以你可以看到你有一个字典JSON响应,其中有几个键值对,其中一个是数组 >字典

您需要将 Dictionary 键的内容分配给新闻对象:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:nil error:nil];
news = [responseDict objectForKey@"posts"];
[mainTableView reloadData];
}

关于objective-c - 在 iOS 上将 Wordpress JSON 解析为 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994032/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com