我將數值從200到1作爲字符串存儲在名爲beaus的數組中。如何按iOS中的最大值和最小值排序
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];
但是,這隻能按第一個數字排序(2在10以上)。有什麼方法可以按數量排序?
我將數值從200到1作爲字符串存儲在名爲beaus的數組中。如何按iOS中的最大值和最小值排序
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];
但是,這隻能按第一個數字排序(2在10以上)。有什麼方法可以按數量排序?
對其進行排序,您可以這樣更新您的排序描述:
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar.integerValue" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];
這將得到每個字符串的整數值,排序將基於該數字而不是字符串值。
如果你必須使用字符串,然後用零填充你的數字,那麼它會像你想要的那樣排序,而不是其他的更改,如下所示: '002'而不是'2'和'034'而不是' 34'
你不能將一個NSString強制轉換爲NSUIntger! – AlexWien 2013-02-18 18:51:03
如果你必須使用字符串,然後左邊用零填充你的數字,那麼它會像你想要的那樣排序,沒有其他變化,像這樣:'002'而不是'2'和'034'而不是'34' – jonathan3087 2013-02-18 18:54:02
更糟你做不到? – AlexWien 2013-02-18 18:59:20
如果由於某種原因,你不想給字符串轉換導入過程中爲int,你 必須編寫和使用自己的選機:
這顯示瞭如何通過財產‘datatoflat’beause排序包含數字的NSString類型。排序完成升序。最後一行爲return (i1- i2)
。
NSArray *sortedArray;
sortedArray = [beaus sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString* s1 = [(NSString*) a dataoflar];
NSString* s2 = [(NSString*) b dataoflar];
int i1 = [s1 integerValue];
int i2 = [s2 integerValue];
return (i2 - i1);
}];
假設也沒關係,該值是最後一個數組中NSString的,你應該這樣
NSMutableArray *mutableBeaus = [[beaus mutableCopy] autorelease];
[mutableBeaus sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
// mutableBeaus now has the array sorted in an ascending order 1 < 002 < 3
請更確切地說明這個值是什麼類型?的NSString?或int ?,什麼類型是「dataoflar」 – AlexWien 2013-02-18 18:33:05
爲什麼你將數字存儲爲字符串?爲什麼不把它們存儲爲數字? – rmaddy 2013-02-18 18:33:11
這是我帶來數據的方式。有什麼方法可以在數組中將它們轉換爲數字嗎?......不,這些數據必須由字符串引入,否則我會改變它。 – user1803649 2013-02-18 18:37:39