Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 跨n个键使用KVC查找最小值_Objective C_Ios_Nsarray_Kvc - Fatal编程技术网

Objective c 跨n个键使用KVC查找最小值

Objective c 跨n个键使用KVC查找最小值,objective-c,ios,nsarray,kvc,Objective C,Ios,Nsarray,Kvc,再次卡在Obj-C中的KVCs上 我想使用KVC来找到多个键的最小值 考虑以下数组: NSArray *data = [[NSArray alloc] initWithObjects: [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:2.0], @"a", [NSNumber numberWithFloat:5.0], @"b", [NSNumber numberWithF

再次卡在Obj-C中的KVCs上

我想使用KVC来找到多个键的最小值

考虑以下数组:

NSArray *data = [[NSArray alloc] initWithObjects:
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:2.0], @"a", [NSNumber numberWithFloat:5.0], @"b", [NSNumber numberWithFloat:4.0], @"c", nil],
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:3.0], @"a", [NSNumber numberWithFloat:1.0], @"b", [NSNumber numberWithFloat:1.5], @"c", nil],
                 [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:9.0], @"a", [NSNumber numberWithFloat:7.0], @"b", [NSNumber numberWithFloat:6.0], @"c", nil],
                 nil];
我可以通过以下方法轻松找到“a”、“b”或“c”的最小值:

float minKeyA = [[data valueForKeyPath:@"@min.a"] floatValue];  // value: 2.0
float minKeyB = [[data valueForKeyPath:@"@min.b"] floatValue];  // value: 1.0
float minKeyC = [[data valueForKeyPath:@"@min.c"] floatValue];  // value: 1.5
我想要实现的是获取一个NSSet或NSArray密钥,并在这些密钥池中找到最小值

NSSet *keySet1 = [NSSet setWithObjects:@"a", @"b", nil]; 
// use to find absolute minimum value across keys 'a' and 'b' --> desired value 1.0
NSSet *keySet2 = [NSSet setWithObjects:@"a", @"c", nil];
// use to find absolute minimum value across keys 'a' and 'c' --> desired value 1.5
NSSet *keySet3 = [NSSet setWithObjects:@"a", @"b", @"c", nil];
// use to find absolute minimum value across keys 'a', 'b', and 'c' --> desired value 1.0

欣赏任何提示:)

一个简单的解决方案是首先找到每个键的最小值,然后在第二步中找到这些最小值中的最小值

NSMutableSet *localMinima = [NSMutableSet setWithCapacity:[keySet1 count]];
for (NSString *key in keySet1) {
    NSString *keyPath = [NSString stringWithFormat:@"@min.%@", key];
    NSNumber *localMin = [data valueForKeyPath:keyPath];
    [localMinima addObject:localMin];
}
NSNumber *globalMin = [localMinima valueForKeyPath:@"@min.self"];

我在想,也许这种方法是最简单的。如果第二天没有其他人以更好的方式做出回应,我会认为这是正确的。谢谢:)