OStack程序员社区-中国程序员成长平台

标题: objective-c - 使用获取的请求排序描述符 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 22:58
标题: objective-c - 使用获取的请求排序描述符

我的排序描述符有问题。我正在获取一个足球俱乐部的排名。这就是我的网络服务返回数据的方式。

"ranking": [

    {
        "type": "competitie",
        "position": "1",
        "name": "Club Brugge",
        "gamesPlayed": "10",
        "gamesWon": "6",
        "gamesTied": "4",
        "gamesLost": "0",
        "goalsPos": "25",
        "goalsNeg": "12",
        "goalsDiff": 13,
        "points": "22"
    }

这是我的获取请求。

- (void)getKlassement // attaches an NSFetchRequest to this UITableViewController
{
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName"Klassement"];
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey"position" ascending:YES]];

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                        managedObjectContext:self.genkDatabase.managedObjectContext
                                                                          sectionNameKeyPath:nil
                                                                                   cacheName:nil];

}

现在排名如下。 1,11,12,13,14,2,3,4,5... 我认为问题在于我的网络服务中的位置是一个字符串。我的排序描述符将其视为一个字符串。但实际上它应该将其视为一个整数。有人知道我该怎么做吗?

提前致谢。



Best Answer-推荐答案


即使“位置”是作为来自您的 Web 服务的字符串提供的,最好的解决方案是将其存储为核心数据模型中的数字(“整数 32”或类似的)。对象对应的属性是NSNumber,它会被正确排序。

如果你真的不能这样做,你可以作为一种解决方法尝试使用 localizedStandardCompare 作为比较函数。我认为这会根据数值对包含数字的字符串进行排序。

[NSSortDescriptor sortDescriptorWithKey"position" ascending:YES
    selectorselector(localizedStandardCompare]

关于objective-c - 使用获取的请求排序描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12782997/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4