2012-05-16 35 views
0

請給我建議,我該如何解決解決這個問題.. NSSortDescriptor

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Weight" ascending:NO selector:@selector(localizedStandardCompare:)]; 
 NSArray *sortedArray = [arrayToSort sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

我得到的輸出:

-[__NSCFNumber length]: unrecognized selector sent to instance 0x6a81cf0 
2012-05-16 09:54:21.480 MedzioSearch[2188:f803] *** WebKit discarded an uncaught exception in the webView:shouldInsertText:replacingDOMRange:givenAction: delegate: <NSInvalidArgumentException> -[__NSCFNumber length]: unrecognized selector sent to instance 0x6a81cf0 

回答

2

arrayToSort什麼樣的對象?他們的「重量」屬性的類型是什麼?

猜測,一些對象的Weight屬性是NSString,而有些對象的Weight屬性是NSNumber。因此,排序正在嘗試做類似[someString localizedStandardCompare:someNumber]。內部到-[NSString localizedStandardCompare:],它調用-length上的參數是NSNumber並且不能識別該選擇器。

順便說一下,屬性名稱應該以小寫字母開頭,除非它們以縮寫或初始(如「URL」或「TIFF」)開頭。所以,你的財產應該被稱爲「重量」,而不是「重量」。

+0

感謝您的回覆。我正在使用@「Weight」作爲NSString.Please提供給我一個更好的NSString格式解決方案。 –

+0

正如我所說的,我懷疑所有的「Weight」屬性都給出了「NSString」。試着把這段代碼放進去,看看它是什麼日誌:'NSLog(@「%@」,[arrayToSort valueForKeyPath:@「Weight.class」]);' –

+0

Thanks Thomases,It work。 –