문제

나는 주요 가치로 plist (dictonaries 배열)를 재주문해야합니다.

이 예제에서 열쇠 이름 (Matt, Joe)의 값으로 주문하고 싶습니다.

<dict>
    <key>Name</key>
    <string>Matt</string>
    <key>Details</key>
    <string>Me</string>
</dict>
<dict>
    <key>Name</key>
    <string>Joe</string>
    <key>Details</key>
    <string>You</string>
</dict>

쉬운 방법이 있습니까? 앱이 실행될 때마다 코드로 수행하고 싶지 않습니다. 데이터 파일로 수행하고 싶습니다.

어떤 아이디어?

모든 도구를 사용 하여이 작업을 수행하게되어 기쁩니다. 명령 줄에 정렬 용 Ninja 매개 변수, PLIST 편집기, 텍스트 편집기 또는 무엇이든.

도움이 되었습니까?

해결책 5

나는 5 개의 라인 PHP 스크립트를 작성하여 다시 주문했습니다. 나는 여전히 빠르고 편안하게 무언가를하기 전에 배우는 코코아가 많다고 생각합니다.

답변 해주셔서 감사합니다.

다른 팁

이것은 또 다른 코딩 솔루션이지만, 그 주위에 포장 된 기본 명령 줄 도구를 만드는 것은 어렵지 않습니다.

NSArray* arrayOfDictionaries; //the array we want to sort
NSSortDescriptor* nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES];
NSArray* sortedArray = [arrayOfDictionaries sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]];
[nameSortDescriptor release];

표준 입력에서 읽은 작은 파이썬 스크립트를 작성하고 표준 출력에 씁니다.

# sortplist.py
import plistlib
import sys

plist = plistlib.readPlist(sys.stdin)
plistlib.writePlist(plist, sys.stdout)

그러니 그냥 해요 python sortplist.py <original.plist >sorted.plist.

// Our key array
NSMutableArray *unsortedKeys = [NSMutableArray array];
// Assume we have some array of dictionaries
for( NSDictionary *dict in dictionaryArray ) {
  NSString *key = [dict objectForKey:@"Name"];
  if( key )
    [unsortedKeys addObject:key];
}
NSArray *sortedKeys = [unsortedKeys sortedArrayUsingSelector:@selector(compare:)];

// Do things with the keys...

파이썬은 당신의 친구입니다. http://effbot.org/zone/element-sort.htm :-)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top