Answers:
可以使用@()表达式将基元转换为对象。因此,最短的方法是使用方法转换int为NSNumber字符串表示形式stringValue:
NSString *strValue = [@(myInt) stringValue];
要么
NSString *strValue = @(myInt).stringValue;
stringValue,但是全部都有description-因此,作为一种好习惯,最好习惯于使用description(NSNumber的确,这里不必担心)。尝试以下操作(description将打印日期,但stringValue会崩溃):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
!)的情况下将注释转换为Swift ,您会发现在Objective-C中做错了。如果对象test不是您创建的,则不是您的责任。您可以尝试调用isKindOfClass:所有接收到的参数,但是即使这样也可以被欺骗(通过传递结构而不是NSObject)。因此,请勿这样做:仅明确记录所需的类型。
(id)是一个错误,这只是演示了IMO description优先于IMO的观点stringValue(我可能是错的,多年来没有在ObjC中编程)
如果此字符串是要向最终用户展示的,则应使用NSNumberFormatter。这将添加数千个分隔符,并将遵循用户的本地化设置:
NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];
例如,在美国,这将创建一个字符串10,000,而在德国,则将创建一个字符串10.000。
NSString *strValue = @(myInt).stringValue;