使用相同的重新排序对多个NSArray对象进行排序

时间:2012-09-25 05:09:43

标签: ios sqlite sorting nsarray

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

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

当前的方法是一个自定义shell排序例程,它只对“name”进行比较,但会在所有受影响的阵列上移动数据。这是有效的,它相对干净。当然,由于NSObjects vs C数组的开销,您会受到重创。

是否有更快,更清洁,更“iOS”的方式来做到这一点?

将它全部放入SQLite表并以这种方式执行吗?

1 个答案:

答案 0 :(得分:1)

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

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

我能想到的另一种方式是:

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