키 값으로 plist (사전)를 분류하는 쉬운 방법이 있습니까?
-
21-08-2019 - |
문제
나는 주요 가치로 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 :-)
제휴하지 않습니다 StackOverflow