在iOS中对属性列表中的键进行排序

时间:2012-06-28 10:15:22

标签: ios sorting plist

我创建了一个属性列表,其中包含键1到11,所有值都为0。

该列表将用作选择器视图的数据源。

我有这些财产:

@property (nonatomic, strong) NSDictionary *erfaring;
@property (nonatomic, strong) NSArray *erfaringKeys;

这在实现文件中:

NSString *erfaringFile = [[NSBundle mainBundle]
                         pathForResource:@"Erfaring" ofType:@"plist"];
erfaring = [[NSDictionary alloc] initWithContentsOfFile:erfaringFile];
erfaringKeys = [erfaring allKeys];

问题是,当键被加载到选择器视图时,它们的排序错误如:7,3,8,4,11,9,5,1,6,2,10。

任何帮助?

2 个答案:

答案 0 :(得分:1)

您需要对字典的键进行排序

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                     @"String 1", @"1",
                     @"String 4", @"4",
                     @"String 3", @"3",
                     @"String 2", @"2", nil];

NSArray *sortedKeys = [dic keysSortedByValueUsingSelector:@selector(compare:)];

然后使用排序键进行迭代

for (NSString *sortedKey in sortedKeys) {
    NSString *value = [dic objectForKey:sortedKey];
}

答案 1 :(得分:0)

您可以在加载picker-

之前对数组进行排序
erfaringKeys = [erfaring allKeys];
erfaringKeys = [erfaringKeys sortedArrayUsingSelector:@selector(compare:)];