0

我有一个数组,其中包含多个其他数组,每个数组中都有两个字符串。我想根据子数组中的第一个字符串按字母顺序对父数组中的项目进行排序。我该怎么做?

父数组--- childArray1 (bString, string) childArray2 (dString, string) childArray3 (cString, string) childArray4 (aString, string)

改为 --> childArray4 (aString, string) childArray1 (bString, string) childArray3 (cString, string) childArray2 (dString, string)

所以每个子数组中的第一个字符串决定了子数组在父数组中的索引

4

1 回答 1

1

最简单的解决方案是没有多维数组,而是使用自定义对象作为值,使用compare:方法,例如

@interface MyObject : NSObject

@property (nonatomic, strong, readwrite) NSString* firstString;
@property (nonatomic, strong, readwrite) NSString* secondString;

- (NSComparisonResult)compare:(MyObject*)object;

@end


@implementation MyObject

- (NSComparisonResult)compare:(MyObject*)object {
   return [self.firstString compare:object.firstString];
}

@end

然后使用以下方法对数组进行排序:

NSArray* sortedObjects = [array sortedArrayUsingSelector:@selector(compare:)];

如果你想坚持你的实施,那么

NSArray* sortedObjects = [array sortedArrayUsingComparator:^(id obj1, id obj2) {
   NSString* string1 = [obj1 objectAtIndex:0];
   NSString* string2 = [obj2 objectAtIndex:0];

   return [string1 compare:string2];
}];
于 2013-04-21T17:16:20.647 回答