使用提取的请求排序描述符

时间:2012-10-08 13:42:16

标签: objective-c ios web-services core-data nsfetchrequest

我的排序描述符有问题。我正在获得足球俱乐部的排名。这就是我的web服务提供数据的方式。

"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 ... 我认为问题是我的webservice中的position是一个String。我的排序描述符将它看作一个字符串。但实际上它应该把它看作一个整数。有人知道我怎么做吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

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

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

[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES
    selector:@selector(localizedStandardCompare:)]