gpt4 book ai didi

json - UITableview在numberOfRowsInSection崩溃; NSDictionary中的Json到UITableview

转载 作者:行者123 更新时间:2023-12-03 17:41:20 28 4
gpt4 key购买 nike

我已经将JSONKit与JSONKit从URL提取到initWithNibName中的NSDictionary

    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:jsonUrl]];
JSONDecoder *jsonKitDecoder = [JSONDecoder decoder];
jsonDic = [jsonKitDecoder parseJSONData:jsonData]; // NSDictionary *jsonDic
NSLog(@"Json Dictionary Fetched %@", jsonDic); // Display the Json fine :-)
NSLog(@"Dictionary Count %i", [jsonDic count]); // Display the Dic count fine :-)
array = [jsonDic objectForKey:@"courses"]; // NSArray *array
NSLog(@"Courses Found %@", array); // Display the array fine :-)
NSLog(@"Courses Count %i", [array count]);

这是杰森
    { "name":"Name 1" , "courses": [
{ "title":"Course 1" , "desc":"This is course 1" },
{ "title":"Course 2" , "desc":"This is course 2" },
{ "title":"Course 3" , "desc":"This is course 3" } ]
}

我将一个tableview拖动到xib。在Interface Builder上的Connections中将IBOutlet UITableview tblView设置为tableview,然后将tableview dataSource分配给FilesOwner

手动将tableview事件添加为
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
int cnt = [array count]; // CRASHES HERE Remeber returning 1; still why ?
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
int indx = [indexPath indexAtPosition:1];
/* THESE ARE ALL COMMENTED
NSString *key = [[jsonDic allKeys] objectAtIndex:indx];
NSString *value = [jsonDic objectForKey:key];
cell.textLabel.text = value;
/* / THESE ARE ALL COMMENTED
NSDictionary *eachItem = [array objectAtIndex:indx];
cell.textLabel.text = [eachItem objectForKey:@"title"];
// */
cell.textLabel.text = @"My Title"];
return cell;
}

有人请帮我。我需要在表格 View 上显示 class 。

最佳答案

如果您向其发送消息(此处计数),则可能会释放数组对象,导致崩溃(EXEC_BAD_ACCESS?)。从线

array = [jsonDic objectForKey:@"courses"];    // NSArray *array

好像它是自动发布的,应该保留它。

编辑:

您可以通过以下方式保留它:

将其设置为保留属性
@property(nonatomic, retain) NSArray* array;

并使用访问器
self.array = [jsonDic objectForKey:@"courses"]; 

它会自动释放旧值并保留新值。或者通过明确保留它
array = [[jsonDic objectForKey:@"courses"] retain];

那么您一定不要忘记在完成操作后将其释放,否则会泄漏内存。您应该阅读 Advanced Memory Management Programming Guide,它为您提供了详尽的解释,并且了解基本技术非常关键。

关于json - UITableview在numberOfRowsInSection崩溃; NSDictionary中的Json到UITableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240140/

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