2013-04-21 61 views
0

我有一个数组,其中包含多个其他数组,每个数组都有两个字符串。我想根据子数组中的第一个字符串按字母顺序对父数组中的项进行排序。我将如何做到这一点?多维数组按字母顺序排列(obj c)

父阵列--- childArray1(bString,字符串) childArray2(dString,字符串) childArray3(CSTRING,字符串) childArray4(ASTRING,字符串)

切换到 - > childArray4(ASTRING ,字符串) childArray1(bString,字符串) childArray3(CSTRING,字符串) childArray2(dString,字符串)

因此,每个子阵列中的第一个字符串确定在PA中的子节点数组的索引出租阵列

+0

例子就明白了,请 – 2013-04-21 17:09:49

回答

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]; 
}];