2014-09-03 24 views
0

我正在尝试通过对象数组进行排序来查找最大数字。我对客观的C(和一般的C)很新,所以我不确定为什么这不起作用,尽管我的直觉说它可能是由于NSNumber声明。最大变量总是作为数组中的随机值返回。有任何想法吗?下面通过数组对象进行排序以查找最大数字

NSNumber * max = 0; 

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



    if ([mutableChartData objectAtIndex:i] > max) { 
      max =[mutableChartData objectAtIndex:i]; 

     } 


    } 
+0

您确定要使用指针? – Biffen 2014-09-03 11:39:05

+0

检查此[链接](http://stackoverflow.com/questions/3080540/finding-maximum-numeric-value-in-nsarray) – Pawan 2014-09-03 11:40:23

+2

你的代码不工作的原因是,你正在比较数组不正确。 Objective-C集合类只能存储对象,例如NSObject的后代,如NSNumber - 它看起来像你在这里使用的。对象变量你的最大变量是指针,而不是实际的对象。因此,当您查看max值时,您不会看到实际的NSNumber对象,而是看到一个内存引用 - 它指向NSNumber对象的位置。 – mmccomb 2014-09-03 11:58:02

回答

-1

枚举使用阵列码:

的NSNumber *最大= 0;

[mutableChartData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *Stop) 
{ 
    if ([mutableChartData[i] intValue] > [max intValue]) { 
     max =mutableChartData[i]; 
    } 

}]; 

enumerartion是快速和高效,你会得到阵列最大数量

+0

不工作恐怕,当最大值为200时,我的最大值为“1391716256”。 – spogebob92 2014-09-03 11:55:12

+0

您的代码中出现与OP相同的错误。 – 2014-09-03 11:55:41

+0

没有它为我工作我初始化最大= 0,我通过数组枚举,所以将获得阵列本身定义的最大数字 – chaithraVeeresh 2014-09-03 11:58:42

相关问题