我一直在做很多研究,并且不能很好地解决这个问题。在我的应用程序中,我有几个文本字段以int变量的形式保存整数值(至少15个int变量)。我的主要目标是整理从文本字段中保存的从高到低的数字。
现在我将使用以下代码将每个单独的整数变量转换为新的NSNumber,而不是使用排序函数将新的NSNumber从高到低排序?
NSNumber *newNumber = [NSNumber numberWithInt: my_int_variable];
我只觉得这是一种排序12个整数变量的冗余方式,并且有一种更简单的方法。谢谢你的帮助
答案 0 :(得分:1)
从单个文本字段到字符串到整数到NSNumbers到一个数组到一个已排序的数组是一个漫长而笨重的行程。但是值得一游。
// assume these
UITextField *field0;
UITextField *field1;
UITextField *field2;
// make an array for the input and the result
NSArray *textFields = @[field0, field1, field2];
NSMutableArray *numbers = [@[] mutableCopy];
// prepare a number formatter
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
// lots of choices here. see https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumberFormatter_Class/index.html
for (UITextField *textField in textFields) {
NSString *text = textField.text;
NSNumber *number = [formatter numberFromString:text];
[numbers addObject:number];
}
// sort...a few choices here, too. taking the simplest:
[numbers sortUsingSelector:@selector(compare:)];
NSLog(@"ta da: %@", numbers);
或者您想根据内容对文本字段进行排序吗?可行:
NSMutableArray *textFields = [@[field0, field1, field2] mutableCopy];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
[textFields sortedUsingComparator: ^(id objA, id objB) {
NSString *textA = ((UITextField *)objA).text;
NSString *textB = ((UITextField *)objB).text;
NSNumber *numberA = [formatter numberFromString:textA];
NSNumber *numberB = [formatter numberFromString:textB];
return [numberA compare:numberB];
}];
NSLog(@"text fields in order of their contents: %@", textFields);