我需要通过密钥值以重新排序的plist(dictonaries的阵列)。

在本实施例中的内容,我想通过该键名称的值命令(太,乔):

<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>

有一个简单的方法是什么?我不希望每个应用程序运行时做的代码,我只想做给数据文件。

任何想法?

乐于使用任何工具来完成这件事:忍者参数类型命令行,一个的plist编辑器,文本编辑器或任何关于

有帮助吗?

解决方案 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];

我写了一个小Python脚本,从标准输入读取和写入到标准输出:

# 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...

Python是您的朋友: http://effbot.org/zone/element-sort。 HTM : - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top