获取 NSMutableArray 中最小双精度值的索引
Getting index of minimum double value within NSMutableArray
我需要在 NSMutable 双精度数组中的对象中获取最小值(及其索引)。
我正确地得到了最小值,但我无法得到它的索引。出现一个奇怪且非常高的数字。如何检索索引?
double lowestvalue = 1.0;
double highestvalue = 100.0;
double n4 = 4.0;
double n2 = 2.0;
double n3 = 3.0;
double n1 = 10.0;
NSMutableArray *arr1 = [[NSMutableArray alloc] init];
NSNumber *num1 = [NSNumber numberWithDouble:n1];
NSNumber *num2 = [NSNumber numberWithDouble:n2];
NSNumber *num3 = [NSNumber numberWithDouble:n3];
NSNumber *num4 = [NSNumber numberWithDouble:n4];
NSNumber *numL = [NSNumber numberWithDouble:lowestvalue];
NSNumber *numH = [NSNumber numberWithDouble:highestvalue];
[arr1 addObject:num2];
[arr1 addObject:num3];
[arr1 addObject:num4];
[arr1 addObject:numL];
[arr1 addObject:num1];
[arr1 addObject:numH];
NSLog(@"arr1: %@",arr1);
NSNumber * min_ = [arr1 valueForKeyPath:@"@min.doubleValue"];
NSString *str1_ =[NSString stringWithFormat:@"%@",min_];
NSInteger path1_ =[arr1 indexOfObject:str1_];
NSIndexPath *indepath1_ =[NSIndexPath indexPathForItem:path1_ inSection:0];
NSLog(@"Min_ Value = %f and index_ = %ld",[min_ doubleValue], (long)indepath1_.row);
//Min_ Value = 1.000000 and index_ = 9223372036854775807
您的 "weird" 号码是 NSNotFound
,您会发现它包含在 "Return Value" 部分下的 documentation 中。
找不到您的对象的原因是您有一个 NSNumber *
references/objects、valueForKeyPath
returns 和 NSNumber *
的数组,您存储在 min_
,然后生成一个 different NSString
对象(有效地创建 NSNumber
对象的 "picture"),将其引用存储在 str1
,然后询问 indexOfObject
您的 new 对象 不同类型 是否在您的数组中 – 回答 NSNotFound
.
HTH
我需要在 NSMutable 双精度数组中的对象中获取最小值(及其索引)。
我正确地得到了最小值,但我无法得到它的索引。出现一个奇怪且非常高的数字。如何检索索引?
double lowestvalue = 1.0;
double highestvalue = 100.0;
double n4 = 4.0;
double n2 = 2.0;
double n3 = 3.0;
double n1 = 10.0;
NSMutableArray *arr1 = [[NSMutableArray alloc] init];
NSNumber *num1 = [NSNumber numberWithDouble:n1];
NSNumber *num2 = [NSNumber numberWithDouble:n2];
NSNumber *num3 = [NSNumber numberWithDouble:n3];
NSNumber *num4 = [NSNumber numberWithDouble:n4];
NSNumber *numL = [NSNumber numberWithDouble:lowestvalue];
NSNumber *numH = [NSNumber numberWithDouble:highestvalue];
[arr1 addObject:num2];
[arr1 addObject:num3];
[arr1 addObject:num4];
[arr1 addObject:numL];
[arr1 addObject:num1];
[arr1 addObject:numH];
NSLog(@"arr1: %@",arr1);
NSNumber * min_ = [arr1 valueForKeyPath:@"@min.doubleValue"];
NSString *str1_ =[NSString stringWithFormat:@"%@",min_];
NSInteger path1_ =[arr1 indexOfObject:str1_];
NSIndexPath *indepath1_ =[NSIndexPath indexPathForItem:path1_ inSection:0];
NSLog(@"Min_ Value = %f and index_ = %ld",[min_ doubleValue], (long)indepath1_.row);
//Min_ Value = 1.000000 and index_ = 9223372036854775807
您的 "weird" 号码是 NSNotFound
,您会发现它包含在 "Return Value" 部分下的 documentation 中。
找不到您的对象的原因是您有一个 NSNumber *
references/objects、valueForKeyPath
returns 和 NSNumber *
的数组,您存储在 min_
,然后生成一个 different NSString
对象(有效地创建 NSNumber
对象的 "picture"),将其引用存储在 str1
,然后询问 indexOfObject
您的 new 对象 不同类型 是否在您的数组中 – 回答 NSNotFound
.
HTH