gpt4 book ai didi

ios NSPredicate 在 NSDictionary 中查找最近的值

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

我有一个像这样的字典数组:

(
{ key = 1, value = 40},
{ key = 4, value = 50},
{ key = 8, value = 60}
}

这些是这样的,for >=1 项目成本是 40for >=4 item cost is 50 同样明智。

我想获得 5 的值,在本例中为 50。

我试过的一段代码是:

NSMutableArray *wallpaperPriceArray = [[NSMutableArray alloc]init]; // Assuming this has all the dictionary values 

float wallpaperPriceValue = 0;

int itemNumber = 0;

for (int i = 0; i<wallpaperPriceArray.count; i++) {

int check = 0;

if(itemNumber >= [[wallpaperPriceArray objectAtIndex:i] intValue])
{
wallpaperPriceValue = [[[wallpaperPriceArray objectAtIndex:i] objectForKey:@"value"] floatValue];
check++;
}

if(i + 1 <= wallpaperPriceArray.count)
{
if(itemNumber >= [[wallpaperPriceArray objectAtIndex:i+1] intValue] && itemNumber < [[wallpaperPriceArray objectAtIndex:i+1] intValue])
{
wallpaperPriceValue = [[[wallpaperPriceArray objectAtIndex:i+1] objectForKey:@"value"] floatValue];
check++;

if(check == 2)
{
break ;
}
}
}

if(i + 2 <= wallpaperPriceArray.count)
{
if(itemNumber >= [[wallpaperPriceArray objectAtIndex:i+2] intValue] && itemNumber < [[wallpaperPriceArray objectAtIndex:i+2] intValue])
{
wallpaperPriceValue = [[[wallpaperPriceArray objectAtIndex:i+2] objectForKey:@"value"] floatValue];
check++;

if(check == 2)
{
break ;
}
}
}

最佳答案

我不认为谓词是正确的,最好是枚举这里的对象是一些示例代码:

NSArray *array = @[
@{ @"key" : @(1), @"value" : @(40)},
@{ @"key" : @(4), @"value" : @(50)},
@{ @"key" : @(8), @"value" : @(60)}
];

NSInteger searchedValue = 5; // <---

__block NSDictionary *closestDict = nil;
__block NSInteger closestValue = 0;


[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSDictionary *dict = obj;
NSInteger key = [dict[@"key"] integerValue];

// Check if we got better result
if(closestDict == nil || (key > closestValue && key <= searchedValue)){
closestDict = dict;
closestValue = key;

if(key == searchedValue) { *stop = YES; }
}
}];

NSLog(@"value %@", closestDict);

关于ios NSPredicate 在 NSDictionary 中查找最近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25197307/

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