在NSMutableArray中获取最小双精度值的索引

时间:2019-08-14 16:02:03

标签: arrays objective-c 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

1 个答案:

答案 0 :(得分:0)

您的“怪异”数字是NSNotFound,您将在documentation的“返回值”部分中找到该数字。

找不到对象的原因是您有一个NSNumber *个引用/对象数组,valueForKeyPath返回一个NSNumber *,该数组存储在min_中,然后生成不同 NSString对象(有效地为NSNumber对象创建“图片”),将其引用存储在str1中,然后询问indexOfObject是否您的不同类型的对象在您的数组中–回答NSNotFound

HTH