将 JSOn 绘制到 UITableviewCell 中时出错
Posted
技术标签:
【中文标题】将 JSOn 绘制到 UITableviewCell 中时出错【英文标题】:Error Drawing JSOn into UITableviewCell 【发布时间】:2012-10-10 03:51:00 【问题描述】:我有这样的 json(有字典和数组)。 我想将所有 json 绘制到 UItableviewcell 中,但它不在那里绘制
data: [
featured: true,
price:
currency: "IDR",
amount: 5557679,
formatted: "Rp5.558.000"
,
]
这是我的 viewcontroller.h 文件
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
IBOutlet UITableView *mainTableView;
NSURL *URL;
NSDictionary *Deals;
NSArray *Deals_array;
NSMutableData *data;
@end
这是我的 .m 文件
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
self.title=@"SOme Apps";
[UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://someurl.com"]];
NSURLRequest *request=[NSURLRequest requestWithURL:URL];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
/*dispatch_async(kBgQueue, ^
NSData* data = [NSData dataWithContentsOfURL: URL];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
);*/
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
data=[[NSMutableData alloc] init];
NSLog(@"%@",data);
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
[data appendData:theData];
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
NSError* error;
Deals= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
Deals_array = [Deals objectForKey:@"data"]; //2
NSDictionary* loan = [Deals_array objectAtIndex:0];
NSString *test=[loan objectForKey:@"featured"];
NSLog(@"%@",test);
[mainTableView reloadData];
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
NSLog(@"Error");
////set minimum section oftableview
-(int)numberOfTableviewSection : (UITableView *) tableView
return 1;
////set length uitableview
-(int) tableView :(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [Deals_array count];
///declaring uitableview
-(UITableViewCell *)tableView :(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"MainCell"];
if (cell==nil)
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"];
cell.textLabel.text=[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"featured"];
return cell;
@end
但它没有绘制对象键@test,有人可以帮我为什么吗?
【问题讨论】:
【参考方案1】:尝试分配
Deals_array = [[NSArray alloc] initWithArray:[Deals objectForKey:@"data"]];
【讨论】:
你是在问问题还是说是真的? 确实可以使用 Deals_array = [[NSArray alloc] initWithArray:[Deals objectForKey:@"data"]] 非常感谢 [评论已刷新] 嘿,伙计,但是为什么在我写完这一行之后 NSArray *price=[Deals_array objectForKey:@"price"];它返回错误和 NSArray *price=[Deals objectForKey:@"price"];它为空... :( 因为 deal_array 是一个数组并且它没有键......你应该这样做 [[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"] 抱歉我的拼写错误 [[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"]以上是关于将 JSOn 绘制到 UITableviewCell 中时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表