UItableView plist数据排序

时间:2012-06-26 18:24:55

标签: iphone objective-c ios xcode ipad

您好我创建了一个填充了plist数据的表视图,我需要重新排序单元格,我的意思是代替显示这样的数据:

1
2
3
4
5

应该是这样的:

5
4
3
2
1

我正在使用此代码:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
    titles =  [[titles sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]] retain]; 

在这种方法中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

但结果是这样的

1
5
2
4
3 

我该如何解决?

EIDTED:

我的plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>1</string>
    <string>2</string>
    <string>3</string>
    <string>4</string>
    <string>5</string>
</array>
</plist>

2 个答案:

答案 0 :(得分:0)

在创建排序描述符时将ascending:NO更改为ascending:YES

要提供更多建议,您可能需要发布更多代码。您应该发布如何实际填充充当数据源的数据结构的方式,以及如何在cellForRowAtIndexPath中使用该数据结构。

答案 1 :(得分:0)

像这样格式化数据(请注意,您可以通过创建包含数组的.plist来实现此目的)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Title of Array</key>
    <array>
        <string>1</string>
        <string>2</string>
        <string>3</string>
        <string>4</string>
        <string>5</string>
    </array>
</dict>
</plist>

然后使用此代码获取它

NSDictionary *data = [[NSDictionary alloc] initWithContentsOfFile:DataPath];
NSArray *array = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];