我想數組排序會是這個樣子排序一個NSArray: (請忽略了一個事實,這些人早已過任何活的年齡我只是需要大量的!)由一個NSDictionary值
NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"sam",@"name",@"28.00",@"age",nil];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"cody",@"name",@"100.00",@"age",nil];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"marvin",@"name",@"299.00",@"age",nil];
NSDictionary *person4 = [NSDictionary dictionaryWithObjectsAndKeys:@"billy",@"name",@"0.0",@"age",nil];
NSDictionary *person5 = [NSDictionary dictionaryWithObjectsAndKeys:@"tammy",@"name",@"54.00",@"age",nil];
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:person1,person2,person3,person4,person5,nil];
// before sort
NSLog(@"%@",arr);
NSSortDescriptor *ageSorter = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
[arr sortUsingDescriptors:[NSArray arrayWithObject:ageSorter]];
// after sort
NSLog(@"%@",arr);
現在擺在排序輸出將是:
2010-07-21 10:46:31.898 Sorting[70673:207] (
{
age = "28.00";
name = sam;
},
{
age = "100.00";
name = cody;
},
{
age = "299.00";
name = marvin;
},
{
age = "0.0";
name = billy;
},
{
age = "54.00";
name = tammy;
}
)
和排序後:
2010-07-21 10:46:31.900 Sorting[70673:207] (
{
age = "0.0";
name = billy;
},
{
age = "100.00";
name = cody;
},
{
age = "28.00";
name = sam;
},
{
age = "299.00";
name = marvin;
},
{
age = "54.00";
name = tammy;
}
)
正如你可以看到它不排序,但是從我的理解它是由字符串排序。我試過了,但是在嘗試編寫一個方法失敗幾天之後,我會對這個問題進行排序,但我仍然無所適從。什麼是最好的方法和完成這個,所以它按數值排序?
何不你把年齡存儲爲數字嗎? [NSNumber numberWithFloat:28.0f]; – Gobra 2010-07-21 17:55:56
因爲我使用的實際腳本是使用JSON拉動的,所以它以字符串對象的形式出現,否則我會:) – cdnicoll 2010-07-21 18:06:40