【问题标题】:Sorting on Two NSSortDescriptors Fails - iOS对两个 NSSortDescriptors 进行排序失败 - iOS
【发布时间】:2013-12-05 10:40:33
【问题描述】:

我有一个数组,其中填充了一个名为 Line 的核心数据对象。每条线与 VerticePoint 实体具有一对一的关系。 VerticePoint 实体包含一个 x 和 y 坐标。

我正在尝试按 x 和 y 坐标对该数组进行排序。

如果我只按 x 顶点排序,就像这样,它可以工作:

- (NSArray *)sortVerticesBottomLeftOrigin : (NSArray *)verticesPassed {

    NSArray *sortDescriptorsX = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"origin.x" ascending:YES]];

    NSArray *returnedVertices = [verticesPassed sortedArrayUsingDescriptors:sortDescriptorsX];

    return returnedVertices;

}

但是,如果我添加第二个排序描述符以按 y 排序,则排序失败并出现日志错误:-[__NSArrayI ascending]: unrecognized selector sent to instance 0xca7e0e0

代码:

- (NSArray *)sortVerticesBottomLeftOrigin : (NSArray *)verticesPassed {

    NSArray *sortDescriptorsX = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"origin.x" ascending:YES]];
    NSArray *sortDescriptorsY = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"origin.y" ascending:YES]];

    NSArray * finishedSort = [NSArray arrayWithObjects:sortDescriptorsX, sortDescriptorsY, nil];

    NSArray *returnedVertices = [verticesPassed sortedArrayUsingDescriptors:finishedSort];

    return returnedVertices;

}

有什么想法吗?

【问题讨论】:

    标签: ios objective-c arrays sorting nssortdescriptor


    【解决方案1】:

    试试看:

    - (NSArray *)sortVerticesBottomLeftOrigin : (NSArray *)verticesPassed {
        NSSortDescriptor *sortDescriptorX = [NSSortDescriptor sortDescriptorWithKey:@"origin.x" ascending:YES];
        NSSortDescriptor *sortDescriptorY = [NSSortDescriptor sortDescriptorWithKey:@"origin.y" ascending:YES];
    
        NSArray * finishedSort = [NSArray arrayWithObjects:sortDescriptorX, sortDescriptorY, nil];
    
        NSArray *returnedVertices = [verticesPassed sortedArrayUsingDescriptors:finishedSort];
    
        return returnedVertices;
    
    }
    

    sortedArrayUsingDescriptors: 方法需要一个排序描述符数组。您可以在那里传递具有多个描述符的数组。您不必为每个排序描述符添加一个带有一个排序描述符的数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多