2012-12-27 25 views
0

尝试对字典数组进行排序。在plist文件中有两个数组,我试图对其中的一个进行排序并遇到很多麻烦。我可以将字典提取到NSArray中并对文件进行排序。对Plist中的字典数组进行排序

我只能通过提取字典来做到这一点,所以当我试图将信息保存回plist时,我已经失去了我的结构和其他字典阵列。 如何正确排序阵列。我明白我正在提取数组,然后将它保存为自己的文件。我看到我做错了什么,但无法确定正确的方式。

NSArray *array = [dict valueForKey:@"Lighting"]; 
NSSortDescriptor* nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Controller Zone" ascending:YES]; 
NSArray* sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]]; 

NSString *pathToFileExportSorted = @"/Users/scott/Desktop/plistPreSEsorted.plist"; 
[sortedArray writeToFile:pathToFileExportSorted atomically: YES]; 

我已经试过这样的事情,但不能得到那工作或者

[array sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"Lighting.Controller Zone" ascending:YES]]]; 

我只想排序“控制区”的阵列照明和保持的plist的是并非如此。

感谢您的任何帮助。

原始数据:

enter image description here

什么我目前出口,没有灯光和窗帘阵列。阵列现在是plist中唯一的东西。

enter image description here

回答

1
  • 它需要排序的数组分配给Lighting关键
  • ...并保存您最初的字典,改变Lighting关键

    NSArray *array = [dict valueForKey:@"Lighting"]; 
    NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Controller Zone" ascending:YES]; 
    NSArray *sortedArray = [array sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]]; 
    
    NSMutableDictionary *dictToSave = [[dict mutableCopy] autorelease]; 
    [dictToSave setObject:sortedArray forKey:@"Lighting"]; 
    
    NSString *pathToFileExportSorted = @"/Users/scott/Desktop/plistPreSEsorted.plist"; 
    [dictToSave writeToFile:pathToFileExportSorted atomically:YES]; 
    

这应该工作正如你所描述的那样。

+0

我正在寻找类似于set object的东西。谢谢,我今晚会尝试这个。 – ScottEdge

+0

真棒。这很好。谢谢。 – ScottEdge