-1

我需要设置一个整数从 001 开始,而不是只有 1

int iNumber = 001;
NSLog(@"%d",iNumber); // this is logging 1 instead of 001

有没有办法让它成为 001 ?

[更新]

我需要这个,因为我正在从 NSUserDefaults 创建一个 NSMutableArray,之后我使用 NSSortDescriptor 对数组进行排序。问题是因为我无法将 int 设置为从 001 开始,我排序的数组是 0、10、11、12、1、2、3、4、5、6、7、8、9。

更多代码解释

NSString *name = @"Name";
NSUserDefaults *MainArray = [NSUserDefaults standardUserDefaults];
NSString *Temp = [NSString stringWithFormat:@"%@%d", name,MainNumber];
[MainArray setObject:@"test" forKey:Temp];
[MainArray synchronize];
NSLog(@"%@",Temp);
MainNumber++;

上面的代码会这样保存:Name1,Name2,Name3....

我需要它是 Name001、Name002、Name003 .......

先感谢您 :)

4

3 回答 3

3

使用 %03d 格式说明符,例如

NSString *theString = [NSString stringWithFormat: @"%@%03d",name,MainNumber];
NSLog(@"%03d", iNumber );// can also use in nsstring stringWithFormat

Objective-C的方式,

 NSNumberFormatter * numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
 [numberFormatter setPaddingPosition:NSNumberFormatterPadBeforePrefix];
 [numberFormatter setPaddingCharacter:@"0"];
 [numberFormatter setMinimumIntegerDigits:10];

 NSNumber * number = [NSNumber numberWithInt:1];
 NSString * theString = [numberFormatter stringFromNumber:number];

 NSLog(@"%@", theString);

现在你的需求网:

 NSString *name = @"Name";
 NSUserDefaults *MainArray = [NSUserDefaults standardUserDefaults];
 NSString *Temp = [NSString stringWithFormat:@"%@%03d", name,MainNumber];
 [MainArray setObject:@"test" forKey:Temp];
 [MainArray synchronize];
 NSLog(@"%@",Temp);
 MainNumber++;
于 2012-06-20T03:01:19.200 回答
0

你从太低的层面解决问题。要创建一个排序描述符,该描述符将在字符串、、等@"10"之后对字符串进行排序,请告诉它使用,来比较字符串@"2"@"3"@"4"localizedStandardCompare:

每当文件名或其他字符串出现在类似 Finder 的排序的列表和表格中时,都应该使用它。

[NSSortDescriptor sortDescriptorWithKey:theKey
                              ascending:YES
                               selector:@selector(localizedStandardCompare:)];
于 2012-06-20T03:38:29.043 回答
-3

您可以使用“浮动”

float *float = 001;

可能需要调整,因为我在我的 iPad 上,所以我没有 Xcode 来验证......

于 2012-06-20T03:13:41.660 回答