2011-08-30 76 views
0

我想对我使用比较器选择器进行排序的NSMutableArray;我想对同一个数组进行排序并且不想分配给其他数组。如何对NSMutableArray进行排序?

request for member 'Price' in something not a structure or union .... 

其不识别self.Price。

+0

你存储在NSMutableArray中的对象是什么?你可以提供相同的代码吗? –

+0

http://stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it 试试这个... – shivangi

+0

的http://计算器.COM /问题/ 805547 /如何对排序的-NSMutableArray里与 - 自定义的对象 - - 它 看到此链接可能是它可以帮助你.. – shivangi

回答

1

假设compare:Product类中,那么您需要使用控制台进一步调查。

当异常发生时,什么是selfsomeObject的价值观 - 我敢打赌,他们中的一个或者是不是Product或东西是被释放(!我认为是后者)

当碰撞发生时,您可以检查自己和someObject的值在这样的控制台:

po self 
po someObject 

(或使用GUI控制台的左边)。


编辑答案评论:

sortedArrayUsingSelector:返回一个NSArray,HomeProducts是一个NSMutableArray。试试这个:

HomeProducts = [[HomeProducts sortedArrayUsingSelector:@selector(compare:)] mutableCopy]; 
+0

我把比较:在产品类和错误删除,但现在它的另一个警告,导致异常:警告:不兼容Objective-C类型分配'结构NSArray *',预期结构NSMutableArray *' – Azhar

+0

请参阅我的编辑的答案:) – deanWombourne

1

你如何使用它,compare:应该是Product的方法。尝试使用块来代替:

[homeProducts sortUsingComparator: ^NSComparisonResult (id obj1, id obj2) 
{ 
    return [[obj1 Price] compare: [obj2 Price]]; 
} 

,或者如果Price是一个简单的类型,用途:

[homeProducts sortUsingComparator: ^NSComparisonResult (id obj1, id obj2) 
{ 
    return ([obj1 Price] < [obj2 Price]) ? NSOrderedAscending : 
      ([obj1 Price] > [obj2 Price]) ? NSOrderedDescending : 
              NSOrderedSame; 
} 

FWIW,这是习惯给实例变量,变量,属性等的名称从小写字母开始,只有类型以大写字母开头。

相关问题