2010-06-28 106 views
0

我有下面的類:NSArray的排序與自定義對象

typedef enum eItems { 
kItem1, 
kItem2, 
kItem3 
} MyItem; 

@interface MyClass: CCSprite<CCTargetedTouchDelegate>{ 
... 
MyItem mClIt; 
... 
} 

... 
- (NSComparisonResult)MyCompareFunc:(MyClass*)inObject 
- (MyItem)GetSomeItem; 
... 

和功能進行排序:

- (NSComparisonResult)MyCompareFunc:(MyClass*)inObject 
{ 
if ([self GetSomeItem] > [inObject GetSomeItem]) 
    return NSOrderedDescending; 
else if ([self GetSomeItem] < [inObject GetSomeItem]) 
    return NSOrderedAscending; 
return NSOrderedSame; 
} 

我創建的MyClass的NSArray在一些類後來對象:

@interface Person : Main { 
    .... 
    NSArray * mObjArr; 
    .... 
} 

我需要在MyCompareFunc的幫助下使用sortUsingSelector:@selector(MyCompareFunc:)方法對mObjArr進行排序。但我有以下錯誤:

error: accessing unknown 'mObjArr' getter method.

請幫助解決問題。

+0

是否有與mObjArr實例變量相對應的屬性聲明?看起來,因爲你得到了一個「未知的getter」方法,調用代碼正在尋找一個屬性,這個屬性在執行文件中沒有聲明或者沒有被導入。 – warrenm 2010-06-28 05:33:31

+1

它可能有助於顯示錯誤實際發生的代碼部分。 – Chuck 2010-06-28 05:48:15

+0

是的,我沒有財產,謝謝。我已經爲mObjArr添加了該屬性。但我仍然有這個問題。 Programm crash on line: [self.mObjArr sortUsingSelector:@selector(MyCompareFunc :)]; 編譯時我有警告: 'NSArray'可能不會響應'-sortUsingSelector:' – 2010-06-28 06:23:30

回答

2

我不確定這是否是唯一的問題,但是您需要一個NSMutableArray而不是NSArray來使用sortUsingSelector:

+0

感謝這是問題 – 2010-07-01 18:12:27