gpt4 book ai didi

ios - 如何从 NSDictionary 中删除作为 NSDictionary 元素的条目?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:08:50 24 4
gpt4 key购买 nike

我有一个问题,我很长时间都无法解决。我有一个来自服务器的 JSON 响应,它被解析为 NSDictionary lastMsgs,如下图所示: enter image description here

因此,例如 1323 它是一个键,它与 NSDictionary(包含正文、主题等键和值)相关联。所以我需要以某种方式删除嵌套 NSDictionary 值具有条目的条目的问题:type = 1。我不知道如何执行此操作。我试着这样做:

  NSMutableArray* _ModelVals = [[lastMsgs allValues] mutableCopy];
for (int i =0; i<[_ModelVals count]; i++) {
string_compare = [NSString stringWithFormat:@"%@" , [_ModelVals objectAtIndex:i]];
if ([string_compare rangeOfString:@"type = 1"].location != NSNotFound) {
[_ModelVals removeObjectAtIndex:i];
}

}

但它无法正常工作,并没有删除所有类型为 1 的条目。

所以问题是 - 我如何实现它并删除嵌套 NSDictionary 中的条目?

最佳答案

字典中没有值“type = 1”。那只是日志。您可以使用 [dict objectForKey:@"key"]dict[@"key"] 获取字典中键的值。

从你的日志来看,类型似乎是一个NSNumber,而不是一个NSString。只需获取它的 int 表示(假设类型是整数)并使用简单的 C intint 比较。

而且您不能像那样过滤数组。您将跳过一个条目。如果删除条目,则必须将 i 减少 1

或者使用这个更简单的解决方案:

NSSet *keys = [lastMsgs keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) {
return [obj[@"type"] intValue] == 1;
}];
NSMutableDictionary *dict = [lastMsgs mutableCopy];
[dict removeObjectsForKeys:[keys allObjects]];

这将首先收集类型为 1 的所有对象(字典)的键,然后从原始字典的可变副本中删除这些键。

关于ios - 如何从 NSDictionary 中删除作为 NSDictionary 元素的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14441476/

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