gpt4 book ai didi

iphone - 使用 NSPredicate 从复杂的 JSON 资源中过滤 NSArray

转载 作者:行者123 更新时间:2023-11-28 22:31:32 25 4
gpt4 key购买 nike

我正在尝试加载以下 JSON 文件...

{
"divisions" : [
{
"divName" : "Division Name",
"divList" : [
{
"itemName" : "First item",
"itemVisible" : "1"
},
{
"itemName" : "Second item",
"itemVisible" : "0"
},
{
"itemName" : "Third item",
"itemVisible" : "0"
}
]
}
]
}

...进入带有部分的 UITableView(“divName”作为 titleForHeaderInSection,“itemName”在 cell.textLabel.text 中),这不是问题。我遇到的问题是根据 itemVisible 属性的值过滤单元格中的数据——“0”表示隐藏,“1”表示显示。我最好的猜测是它应该使用 NSPredicate 来完成,例如......

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemVisible == %@", @"1"];
NSArray *filteredArray = [randomArrayNameOfItems filteredArrayUsingPredicate:predicate];

...但我不知道如何实际将其与相当复杂的 JSON 对象合并。

如有任何帮助或建议,我们将不胜感激。

最佳答案

为什么不把json串解码成object呢?

NSError *e;
NSDictionary object = [NSJSONSerialization JSONObjectWithData:op.responseData options:NSJSONReadingMutableContainers error:&e];

if ( e )
{
TLog(@"%@ %@",[e localizedDescription],op.responseString);
}

if ( [object isKindOfClass:[NSDictionary class]])
{
NSArray *itemArray = object[@"divisions"][@"divList"]
//filter here
}

如果你的情况你可以简单地将不可见的单元格的高度设置为 0

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//if the cell. itemVisible == 0 , return 0.0f;
}

关于iphone - 使用 NSPredicate 从复杂的 JSON 资源中过滤 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292876/

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