删除 NSDictionaries 中超过 100.000 公里的键和值

Posted

技术标签:

【中文标题】删除 NSDictionaries 中超过 100.000 公里的键和值【英文标题】:Deleting the keys and values in NSDictionaries more than the value 100.000 kilometers 【发布时间】:2015-06-08 11:00:07 【问题描述】:

我在使用 NSDictionary 时遇到问题,我将值添加为千米,并将名称作为键,这就是我给予的方式

NSDictionary * dd = [NSDictionary dictionaryWithObjects:locationKMArray forKeys:nameArray];
NSLog(@"%@",dd);

这是输出的样子

name1 = 1.011115;
name2 = 55.14256;
name3 = 150.48752;
name4 = 22.48668;
:
:

现在看起来像这样我只想打印不到 100.000 公里我该怎么做

【问题讨论】:

不是谷歌,你自己试试。如果发生任何错误,我们会提供帮助.. 【参考方案1】:

您可以过滤dd,如下所示:

NSSet *keys = [dd keysOfEntriesPassingTest:^BOOL(NSString *key, NSNumber *obj, BOOL *stop) 
    return obj.floatValue < 10000;
];
NSLog(@"%@", keys);

[keys enumerateObjectsUsingBlock:^(NSString *key, BOOL *stop) 
    NSLog(@"%@", dd[key]);
];

【讨论】:

请在右键上打勾,对别人有帮助。 好的,我给你,但你能告诉我要打印的数据格式为 name1 = 5.432 ;名称2 = 80.4478; .... 像这样,现在您只需要打印名称,但我也想要这些值【参考方案2】:
NSMutableDictionary *dic = [@@"name1":@"1.011115 km",@"name2":@"55.14256 km",@"name3":@"150.48752 km",@"name4":@"22.48668 km"mutableCopy];
for (NSString* key in dic) 
    NSString *value = [dic objectForKey:key];
    NSArray *array = [value componentsSeparatedByString:@" "];
    double km = [[array objectAtIndex:0] doubleValue];

    if (km > 100) 
        [dic removeObjectForKey:key];
    

NSLog(@"%@",dic);

【讨论】:

【参考方案3】:

你可以这样做

NSDictionary* dict = [NSDictionary dictionaryWithObjects:locationKMArray forKeys:nameArray];
NSArray*keys=[dict allKeys];
for (NSString* key in keys) 
    int km = [dict objectForKey:key];
    if (km > 10000) 
        NSLog(@"%d" km);
    

我不知道您是使用“km”字符串输入的公里数,还是仅输入整数或长整数。根据需要进行调整。

问候

【讨论】:

以上是关于删除 NSDictionaries 中超过 100.000 公里的键和值的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET 删除目录中超过 3 个月的文件

如何使用来自同一个表中超过 100 列的多个列的值插入行?可以使用LOOP吗?

Android中超过30000张图片的快速删除文件夹

CMD 删除特定文件夹中超过 X 天的文件

删除列中超过 30 天的所有行的过程

删除Qube中超过10天的作业