gpt4 book ai didi

ios - 通过过滤另一个 NSDictionary 得到一个 NSDictionary

转载 作者:行者123 更新时间:2023-11-29 13:14:13 29 4
gpt4 key购买 nike

希望有人能帮助我:

我正在使用 NSDictionary 来填充 UITableView。它的模型类似于 [key:userID => value:userName]。tableView 只填充了 userName 但当点击时,它必须发送相关的 userID。当我想过滤 UITable 时,问题就来了。我只是找到了通过将字典转换为 NSArray(使用谓词)来过滤字典的方法,但这让我失去了用户名和用户 ID 之间的关系。

一个解决方案是过滤初始的 NSDictionary 以获得过滤后的 NSDictionary (仍然是关系键/值),但我不知道该怎么做那。我只找到了获取数组的解决方案。

我该怎么做,或者有更好的解决方案吗?

最佳答案

有更好的解决方案,François。从你的 NSDictionary(我将在这里称它为 myDictionary)创建一个像这样的 NSArray(在你的接口(interface)文件中声明它):

NSArray *arrayForTableView;

然后,在加载 NSDictionary 之后,执行以下操作:

arrayForTableView = [myDictionary allKeys]; // so you will have an array of all UserID's

现在,在您的 tableView: cellForRowAtIndexPath: 方法中,您可以这样做:

cell.textLabel.text = [myDictionary objectForKey:[arraForTableView objectAtIndex:indexPath.row]];

然后,如果您希望在用户选择单元格时传递 userID,在您的 tableView: didSelectRowAtIndexPath: 中,您只需这样做:

id userIDSelected = [arraForTableView objectAtIndex:indexPath.row];

然后,当你想根据搜索过滤数组时,你可以简单地重新创建你的 arrayForTableView,通过这种方式“扫描”你的 NSDictionary:

NSString *typedString;
NSMutableArray *arrayFiltered = [NSMutableArray array];
for (int i = 0; i < [[myDictionary allKeys] count]; i++)
{
if ([[myDictionary objectForKey:[[myDictionary allKeys] objectAtIndex:i]] rangeOfString:typedString].location != NSNotFound)
{
[arrayFiltered addObject:[[myDictionary allKeys] objectAtIndex:i]];
}
}

arrayForTableView = arrayFiltered;

这样,您甚至不需要更改您的 UITableView 数据源和委托(delegate)方法。

关于ios - 通过过滤另一个 NSDictionary 得到一个 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261943/

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