2012-05-16 2 views
0

, 어떻게 NSSortDescriptor

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

나는 출력을 얻고있다 ..이 문제를 해결 해결할 수있는 나에게 제안을주십시오 :

arrayToSort에있는 개체의 어떤 종류의
-[__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

? "무게"속성의 유형은 무엇입니까?

일부 개체의 Weight 속성은 NSString이고 일부 개체의 Weight 속성은 NSNumber입니다. 결과적으로, 종류는 [someString localizedStandardCompare:someNumber]과 같은 것을하려고합니다. -[NSString localizedStandardCompare:]에 내부적으로, NSNumber 인 인수에 -length을 호출하며 해당 선택자를 인식하지 못합니다.

그런데 속성 이름은 약어 나 이니셜 리즘 (예 : "URL"또는 "TIFF")으로 시작하지 않는 한 소문자로 시작해야합니다. 따라서 재산은 "중량"이 아니라 "중량"으로 지정해야합니다.

+0

답장을 보내 주셔서 감사합니다. NSString 형식으로 @ "Weight"를 사용하고 있습니다. NSString 형식으로 더 나은 솔루션을 제공하십시오. –

+0

제가 말했듯이, 모든 "Weight"속성이 NSString을 제공하고 있는지 의심 스럽습니다. 이 코드를 넣고 로그 내용을 확인해보십시오. NSLog (@ "% @", [arrayToSort valueForKeyPath : @ "Weight.class"]), ' –

+0

Thomases 감사합니다. –

관련 문제