gpt4 book ai didi

ios - 在我的 UITableViewCell 上设置 JSON 值时出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:04:31 25 4
gpt4 key购买 nike

在我的 UITableViewCell 上设置值时遇到问题。我以 JSON 格式从 Web 服务获取此数据,为此创建了一个类,其中包含来自 JSON 的所有数据。

这就是类。

退款.h

#import <Foundation/Foundation.h>

@interface Refunds : NSObject

-(id)initWithJSONData:(NSDictionary*)data;

@property (assign) NSNumber *refunds_id;
@property (assign) NSNumber *request_number;
@property (strong) NSString *policy_code;
@property (strong) NSString *company;

@end

退款.m

#import "Refunds.h"

@implementation Refunds

@synthesize refunds_id;
@synthesize request_number;
@synthesize policy_code;
@synthesize company;
-(id)initWithJSONData:(NSArray*)data{
self = [super init];
if(self){
NSLog(@"initWithJSONData method called ");

//NSString *u = [data valueForKey:@"policy_code"];
//NSLog(@"%@",u);

refunds_id = [data valueForKey:@"id"];
request_number = [data valueForKey:@"request_number"];
policy_code = [data valueForKey:@"policy_code"];
company = [data valueForKey:@"company"];
}
return self;
}
@end

在我使用 UITableVIew 的 ViewController 中,我有这个实现

NSMutableArray refunds_view = [[NSMutableArray alloc] init];

for (NSDictionary *each_refunds in self.list) {
Refunds *refunds = [[Refunds alloc] initWithJSONData:each_refunds];
[refunds_view addObject:refunds];
}

在方法中

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{}

我有这个:

Refunds *current = [refunds_view objectAtIndex:indexPath.row];
cell.date_admission.text = [current company];

cell.date_admission.text = [current company]; 行中出现以下错误

-[__NSArrayI length]: unrecognized selector sent to instance 0x8bc4eb0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x8bc4eb0'

那就是JSON格式。

[
{
"id": 1,
"holder_rut": 12345678,
"holder_name": "Otro Pedro",
"rut": 12345678,
"name": "Otro Pedro",
"refunds_view": [
{
"id": 60,
"request_number": 456789,
"policy_code": "3500009001",
"company": "Benefits",
"beneficiary_id": 1,
"concept": "Prueba More",
"date": "2014-05-21",
"amount": 20000,
"deductible_amount": 0,
"max_applied": 0,
"yearly_balance": 97,
"payment_amount": 14000,
"payment_method": "Deposito",
"bank": "Estado",
"account_number": "1234567",
"payment_date": "2014-06-20",
"created_at": "2014-06-18 21:55:41"
}
]
}

我需要展示的数据是这个refunds_view

查看 Controller 代码

//UITableView Methods Implemented
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

static NSString *simpleTableIdentifier = @"SimpleCell";

RowCell *cell = (RowCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {

//inicilitacion cell custom
cell = [[RowCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}


Refunds *current = [refunds_view objectAtIndex:indexPath.row];
NSLog(@"company %@",[current company]);
cell.date_admission.text = [current company];


return cell;
}

ViewDidLoad

 - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

//Geting data from JSON Refunds
SBJsonWriter *jsonWriter = [[SBJsonWriter alloc] init];
NSDictionary *dict = [NSDictionary
dictionaryWithObjects:[NSArray arrayWithObjects:rut_user, nil]
forKeys:[NSArray arrayWithObjects:@"rut", nil]];
NSData *jsonData = [jsonWriter dataWithObject:dict];

//URL
NSURL *url = [NSURL URLWithString:@"URL"];


NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
//[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:token forHTTPHeaderField:@"X-Auth-Token"];//TOKEN
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: jsonData];

NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *response = nil;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSLog(@"Response code: %d", [response statusCode]);
NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

SBJsonParser *jsonParser = [SBJsonParser new];
NSDictionary *jsonResponse = (NSDictionary *) [jsonParser objectWithString:responseData error:nil];//I'm a Json Refunds


self.list = [jsonResponse valueForKey:@"refunds_view"];
NSLog(@"Quantity of Refunds Founds %i",[self.list count]);

refunds_view = [[NSMutableArray alloc] init];


for (NSDictionary *each_refunds in self.list) {
//NSLog(@"each_refound %@",each_refunds);
Refunds *refunds = [[Refunds alloc] initWithJSONData:each_refunds];
[refunds_view addObject:refunds];
}
}

我需要尽快修复它。谢谢。最好的问候。

大家好。我试试这个

NSLog(@"%@",[current company]);

2014-06-26 10:32:13.917 Benefits[7178:70b] (
Benefits
)

cell.sol_number.text = [NSString stringWithFormat:@"%@", current.company];

没有出现错误但是值没有显示完整,只显示(

对此的任何想法。谢谢。

最佳答案

 Rewrite your Refund.m like below

#import "Refunds.h"

@implementation Refunds

@synthesize refunds_id;
@synthesize request_number;
@synthesize policy_code;
@synthesize company;

-(id)initWithJSONData:(NSDictionary*)data
{
self = [super init];
if(self)
{
NSLog(@"initWithJSONData method called ");

refunds_id = data[@"id"];
request_number = data[@"request_number"];
policy_code = data[@"policy_code"];
company = data[@"company"];
}
return self;
}
@end

关于ios - 在我的 UITableViewCell 上设置 JSON 值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24423992/

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