排序NSMutableArray与另一个NSMutableArray的顺序相同

时间:2012-08-20 23:02:25

标签: objective-c

我正在使用带有词典的NSMutableArray *allObjectsArray;来填充包含内容的表格视图。

现在我想使用第二个NSMutableArray *userDataArray;(也使用字典)在同一个TableView中显示一些用户定义的数据。

为了让来自不同阵列的词典能够相互识别,他们都有一个带有键的字符串:"Name"具有匹配的值。

那么如何使用userDataArray键中的匹配值编写代码以使allObjectsArray个对象与"Name"个对象的顺序相同?

因此,当创建单元格时,[allObjectsArray objectAtIndex: indexPath.row]现在应该将同一对象表示为[userDataArray objectAtIndex: indexPath.row]

2 个答案:

答案 0 :(得分:2)

为什么不直接将 userDataArray 中的对象与 allObjectsArray 中的对象相关联?例如, allObjectsArray 中的每个对象都可以有一个 userData 字段,该字段指向 userDataArray

中的关联对象

无论如何,如果你真的想对它们进行排序,你可以这样做:

NSArray * descriptors = @[ [ NSSortDescriptor sortDescriptorWithKey:@"Name" ascending:YES ] ] ;
allObjectsArray = [ allObjectsArray sortedArrayUsingDescriptors:descriptors ] ;
userDataArray = [ allObjectsArray sortedArrayUsingDescriptors:descriptors ] ;

编辑:直接将 userDataArray 中的词典与 allObjectsArray

中的词典相关联

对于 allObjectsArray 中的每个对象,因为它们是字典,所以你可以这样做

NSDictionary * dictionaryFromAllObjectsArray = ...
[ dictionaryFromAllObjectsArray setObject:associatedUserObject forKey:@"userObject" ]

现在他们联系在一起......

随后:

NSDictionary * dictionaryAtIndex = [ allObjectsArray objectAtIndex:indexPath.row ] ;
NSDictionary * userDictionaryAtIndex = [ dictionaryAtIndex objectForKey:@"userObject" ] ;

答案 1 :(得分:1)

最好的方法是重新构建数据,这样您只能为任何名称使用单个字典,它会将您当前拥有的对象和键组合在一对字典中。这意味着只需要一个数组,一旦它被排序,你就拥有了你需要的行。