【发布时间】:2014-01-09 06:05:07
【问题描述】:
2 天前我问了如何按字符串对象中的第二个单词对元素进行排序的问题和
我得到了解决方案here
但现在我陷入了新问题
想想我有
nsarray with--> 名字和
nsdictionary 具有相同的 -->names(of nsarray) 作为值和电子邮件 ID 作为键
而我的 nsarray 包含
"Test Teacher"
"Anonymous"
"Dok Teacher"
我的 nsdictionary 包含
"Dok Teacher" --"a@g.com"
"Anonymous" -- "b@g.com"
"Test Teacher" --"c@g.com"
由于需要对这些数组和字典进行排序,因此我使用上面链接中给出的方法对它们进行了排序
但排序后我得到如下数据
排序后的nsarray第二个单词
"Anonymous"
"Test Teacher"
"Dok Teacher"
排序后的字典第二个单词的值
"Anonymous" -- "b@g.com"
"Dok Teacher" --"a@g.com"
"Test Teacher" --"c@g.com"
为什么使用相同的排序方法后,Dok Teacher 和 Test Teacher 在字典和 nsarray 中的不同位置。
以及如何以相同的顺序获取数组和字典。
nsarray 排序代码:
NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:[teachersNames sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *firstTeacher2ndWord = [[[((NSString*)a) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
NSString *secondTeacher2ndWord = [[[((NSString*)b) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
return [firstTeacher2ndWord compare:secondTeacher2ndWord];
}]];
NSLog(@"After %@",sortedArray);
teachersSrc=[NSMutableArray arrayWithArray:sortedArray];
nsdictionary 排序代码
myArray = [teachersList keysSortedByValueUsingComparator:^NSComparisonResult(id a, id b) {
NSString *firstTeacher2ndWord = [[[((NSString*)a) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
NSString *secondTeacher2ndWord = [[[((NSString*)b) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
return [firstTeacher2ndWord compare:secondTeacher2ndWord];
}];
NSLog(@"After %@",myArray);
编辑:
我也尝试过对数组和字典的名字进行排序,然后对两者的姓氏进行排序,但它根本不起作用,
【问题讨论】:
-
用适当的缩进编辑你的问题。
-
为什么要维护两个不同的集合,数组和字典?
-
因为我希望名称在排序数组中,所以当我对 nsarray 进行排序时,排序顺序会保留在 nsarray 中,但不会保留在 nsdictionary 中。
-
@Janak NSMutableDictionary 根本没有任何
sorting problems!这是一个无序的集合,因此您无法对其进行排序。句号。 ;) 如果您需要有序的东西,请使用有序集合(例如 NS[Mutable]Array)。 -
字典无法排序。
标签: ios objective-c sorting nsarray nsdictionary