【问题标题】:Sort multiple NSArray objects with the same reordering使用相同的重新排序对多个 NSArray 对象进行排序
【发布时间】:2012-09-25 05:09:42
【问题描述】:

我有几个NSArray 对象,它们实际上代表了可能被认为是数据库表的内容。我想对其中一个进行排序,并让所有其他人按照相同的顺序进行排序。

这方面的一个例子是为“name”、“address”和“phone_number”设置NSArray 对象,并按名称对它们进行排序。

当前的方法是一个自定义的 shell 排序例程,它只对“名称”运行比较,但在所有受影响的数组上移动数据。这很有效,而且相对干净。当然,由于NSObjects vs C 数组的开销,您会受到打击。

有没有更快、更干净、更“iOS”的方式来做到这一点?

把它全部放到一个 SQLite 表中然后这样做?

【问题讨论】:

    标签: ios sqlite sorting nsarray


    【解决方案1】:

    一种干净的方法是将数据存储在单个 NSArrayNSDictionary 对象中。然后你可以像这样对数组进行排序:

    NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortedArray = [originalArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortName]]
    

    我能想到的唯一其他方法是:

    • 创建索引,即包含数字 0、1、...、N-1 的数组。
    • 根据name数组的内容对索引进行排序。
    • 对于每个数组,根据原始数组和排序索引创建一个排序数组。

    【讨论】:

    • 我最终在 shell 排序例程中完成了它,因为我有几个并行数组要做,而且感觉更干净。你的回答很好,所以我接受了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多