从plist 1-10中排序NSString

时间:2011-03-10 15:23:03

标签: objective-c ios sorting plist

我想要排序的plist有问题。这是一个高分,我想对球员排名进行排序。问题是排名是一个字符串,这搞砸了排序(我得到1,10,2,3,4,5,6,7,8,9)。

我需要以正确的方式对其进行排序。对于排序我使用:

NSArray *unSortedNames = [NSArray arrayWithContentsOfURL: plistURL];
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"rating" ascending:YES] autorelease];
names = [[unSortedNames sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]] retain];

前三名球员的日志如下所示:

  {
    isUser = NO;
    nick = Player;
    rating = 1;
    score = 57314;
},
    {
    isUser = NO;
    nick = Player321;
    rating = 10;
    score = 212;
},
    {
    isUser = NO;
    nick = "Player123";
    rating = 2;
    score = 24540;
},

关于如何解决这个问题的任何想法?

感谢Mikael

1 个答案:

答案 0 :(得分:2)

几个选项......

  1. 向您的类添加一个readonly属性,该属性返回您的等级iVar的整数版本。然后根据此属性进行排序。

  2. 使用sortedArrayUsingFunction:编写一个比较2个排名的函数,根据它们的整数值,然后返回排序顺序。

  3. 1似乎应该更加简单。