2013-04-21 65 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]; 
}];