就我個人而言,我會創建一個名爲Name的簡單類,它具有firstName屬性和lastName屬性。然後,您可以遍歷數組並創建您的Name實例,將它們添加到NSMutableArray中,然後對數組進行排序。如果你想要的話,你可以去字典路線。
下面是一個例子:
NSMutableArray *namesList = [NSMutableArray arrayWithCapacity:0];
for (NSString *name in originalArray) {
NSArray *tempArray = [name componentsSeparatedByString:@" "];
Name *newNameInstance = [[Name alloc] init];
newNameInstance.firstName = [tempArray objectAtIndex:0];
newNameInstance.lastName = [tempArray objectAtIndex:1];
[namesList addObject:newNameInstance];
}
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"lastName"
ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [namesList sortedArrayUsingDescriptors:sortDescriptors];
此代碼還沒有得到遏制,但它應該工作。我沒有關心內存管理,請注意這一點。
更新 對不起,應該是[tempArray objectAtIndex:0]。修正它上面。
由於firstName和lastName是字符串,所以它們應該聲明爲NSString。儘量不要使用id作爲屬性,除非你有一個非常好的理由。
更新2 如果您要檢查的值做到這一點:
for (Name *name in sortedArray) {
NSLog(@"%@", name.firstname);
NSLog(@"%@", name.lastName);
}
感謝您的答覆!儘管如此,在Name類中,有幾個問題的屬性是指NSString或id爲firstName和lastName。另外,它表示NSString可能不會響應objectAtIndex。 tempArray會進去嗎?對不起,我在Obj-C仍然很新。 –
你說得對。我更新了代碼。 – sosborn
我沒有得到任何更多的錯誤,但是當我NSLOG namesList,我得到這個:'「<名稱:0x4b420d0>」,「<名稱:0x4b983c0>」,「<名稱:0x4b98430>」,另外,當我創建了新的簡單類,應該是它自己的@property和@synthesize文件,還是原始文件中的新類方法?也許那是我出錯的地方。 –