2010-04-21 3 views
1

내 설정 :NSTableColumn 정렬 키 및 선택기와 함께 작동하도록 NSFormatter 하위 클래스를 얻는 방법?

  • 는 내가있는 NSDictionary의 NSMutableArray를이 내 NSTableView는 대한 데이터 소스 인 개체를 채울 수있는 SQLite는 데이터베이스를 가지고있다.
  • 열 중 하나가 "시간"을 보유하고 시간은 초를 보유하는 부동 소수점입니다.
  • 이 열에 값을 분 : 초로 표시하고 싶습니다. 예를 들어, 내 데이터는 123.4329387이 될 것입니다. 2:03에 NSFormatter (또는 NSNumberFormatter)의 하위 클래스를 사용하여 아무런 문제없이 열에 NSTextField를 적용하고 싶습니다.
  • IB의 테이블 열 속성을 사용하여 정렬을 정렬 했으므로 정렬 키가 "시간"으로 설정되고 선택기가 "비교 :"로 설정되어 포맷터없이 정상적으로 작동합니다. I 정렬 (내림차순) 때

현재이

1시 37분, 1시 31분, 0시 10분, 0시 10분, 0시 9분 1:30 1:30 나에게 이런 일을 제공합니다 , 1:26, 0:09

및 그와 같은 말도 안되는 것처럼, 무언가 진행되고있는 것처럼 보이지만 확실히 정렬되지는 않습니다.

서식이 지정된 값 대신 기본 데이터를 정렬하도록 정렬을 얻으려면 어떻게해야합니까? 또는 사용자 지정 정렬 방법을 지정하는 방법과 해당 메서드에 대한 코드를 어디에 넣어야합니까? 나는이 문제를 해결하는데 도움이되는 것을 발견하지 못했고, 이것에 대한 도움이 가장 감사합니다.

답변

1

정렬 할 때 NSString 클래스의 compare :를 사용했지만 기본 숫자 데이터를 사용하고있는 것으로 나타났습니다. 여기에 어떤 일이 일어나고 있는지 정확히 알 수는 없지만 "timeCompare"라는 NSString 범주에서 자체 비교 메서드를 만들어이 문제를 해결할 수있었습니다. 그런 다음 인터페이스 빌더에서 필자는 테이블 열의 selector 필드에 "timeCompare :"를 넣었습니다. 이 메서드는 내 사용자 지정 비교 메서드를 호출하여 NSNumbers에 주어진 문자열을 변환 한 다음 compare :를 호출합니다.

관련 문제