2011-08-30 85 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,這是習慣給實例變量,變量,屬性等的名稱從小寫字母開始,只有類型以大寫字母開頭。

相關問題