【发布时间】:2012-09-05 09:31:45
【问题描述】:
是否有一个 Objective-c 函数可以从 NSUInteger 返回 NSString *,即:
- 1 -> 第一
- 2 -> 第二个
- ...
- 10 -> 10
- 21 -> 21 日
- ...
- 31 -> 31 日
从 1 到 31 的范围。谢谢!
【问题讨论】:
标签: iphone cocoa-touch
是否有一个 Objective-c 函数可以从 NSUInteger 返回 NSString *,即:
从 1 到 31 的范围。谢谢!
【问题讨论】:
标签: iphone cocoa-touch
- (NSString *)stringFromInt:(int)num {
NSString stringAddition;
if (num%100 >= 11 && num%100 <= 13) {
stringAddition = @"th";
}
else {
switch (num % 10) {
case 1: stringAddition = @"st"; break;
case 2: stringAddition = @"nd"; break;
case 3: stringAddition = @"rd"; break;
default: stringAddition = @"th"; break;
}
}
return [NSString stringWithFormat:@"%i%@", num, stringAddition];
}
编辑:
修复了 11、12、13 的问题。
【讨论】:
if() 声明。另外我更希望这个方法被称为“ordinalFromInt”,而不是“stringFromInt”——这个名字并没有告诉我我们正在添加任何东西,我希望它是[NSString stringWithFormat:@"%d", num]的简写。跨度>
if(num >= 11 && num <= 13) stringAddition = @"th";。