gpt4 book ai didi

ios - 难以将 Array 的内容写入 tableview

转载 作者:行者123 更新时间:2023-11-28 20:06:30 25 4
gpt4 key购买 nike

我一直在努力完成一项任务,该任务涉及从 json(从链接)获取值,将其写入数组,然后通过说

将其插入到我的行中
cell.textLabel.text=[myArray objectAtIndex:indexPath.row];

获取方法

-(void)getData:(NSData *) responseData{
NSError *error;
NSDictionary *json=[NSJSONSerialization JSONObjectWithData:responseData option:kNilOptions error:&error[;
myArray=[json objectForKey:@"cars"];
NSLog(@"cars %@",myArray);//returns array values just fine
}

NSLog 完美地返回了我的数组,然而当我说

cell.textLabel.text=[myArray objectAtIndex:indexPath.row];

它是空的,(我认为这是因为这段代码在 getData 方法之前运行但是即使我在加载方法中写出数组的 URL 并将它记录在那里并获取我的数组,当我尝试分配它时到一个单元格,我再次得到空值。如果我能解决这个问题,我真的很乐意。谢谢添加代码

已编辑:添加代码,之前的问题已解决,但现在尝试获取 TypesArray(dictionary) 的值以显示在我的单元格标签中。或者我应该将 JSon 转换为数组格式。Json 数据是 {"regions":{"region":"House"} 但不允许我格式化为数组

 #define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)
#define kmyURL [NSURL URLWithString:@"http://www.site.com/region/index.php"]

- (void)viewDidLoad
{

[super viewDidLoad];
NSURL *myURL =[NSURL URLWithString:@"http://www.site.com/region/index.php"];

NSError *error=nil;
NSString *str=[NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",str);
// sqlResults=[NSArray arrayWithContentsOfURL:myURL];

dispatch_async(kBgQueue, ^{
NSData *data=[NSData dataWithContentsOfURL:kmyURL];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject: data waitUntilDone:YES];
});
}


-(void)fetchedData:(NSData *)responseData{

NSError *error;
NSDictionary *json=[NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

myarr=[json valueForKey:@"regions"];
NSLog(@"regions: %@",myarr);
TypesArray =[[NSDictionary alloc]initWithDictionary:json];
NSLog(@"json %@",TypesArray);
[self.tableView reloadData];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
}
NSLog(@"Sql Results: %@",sqlResults);
NSLog(@"regions out: %@",myarr);
NSLog(@"Typesb: %@",TypesArray);

cell.textLabel.text=[TypesArray valueForKey:@"region"]; //Nothing is being written to cell here
return cell;
}

数据看起来像这样:

{"regions":{"region":"Island"}}

最佳答案

您对 NSArray 函数和 NSDictionary 函数感到困惑。

valueForKey:

通过转到数组的每个对象并为指定的键请求一个值,返回一个值数组。这在代码文档中有非常清楚的解释(代码完成甚至显示一个带有链接的更多按钮)。

您还没有发布数据样本,也没有发布 TypesArrayNSArray 还是 NSDictionary(请注意变量不应该有开头的大写字母)。

如果它是一个 NSDictionary 使用这个:

[TypesArray objectForKey:@"region"];

如果它是一个NSDictionary的数组

[[TypesArray objectAtIndex:indexPath.row] objectForKey:@"region"];

对于上面的内容,请注意将它定义为NSArray 还是NSDictionary 并不重要。从网络服务调用返回的内容很重要。使用 [class][isKindOfClass:] 来检查这一点。

请在以后发布所有包含对象定义和数据示例的代码,无论您说“打印出 X”的任何地方,请向我们展示打印出来的内容。最后你说你打印了字典,一切顺利,但是获取一个值并没有更新标签,打印出你试图获取的值,然后再次展示给我们。我们无法对这些东西进行猜测,这就是为什么没有人能够回答。

关于ios - 难以将 Array 的内容写入 tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21909846/

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