13 objective-c string-formatting nsstring nsinteger ios
我试图用几个不同的部分制作一个字符串.以下就是我现在所拥有的.我的代码中没有任何错误,但是一旦我运行它并执行触发它的事件我得到EXC_BAD_ACCESS.有没有另一种方法将其NSInteger投入NSString?
NSString *part1, *part2, *tempString;
NSInteger num1;
NSInteger num2;
part1=@"some";
part2=@"text";
tempString = [NSString stringWithFormat:@"%@%@%@%@",
part1,
(NSString *)num1,
part2,
(NSString *)num2];
Run Code Online (Sandbox Code Playgroud)
Ben*_*tto 20
一个字符串和一个整数是根本不同的数据类型,在Objective-C铸造为您在这种情况下,不会做一个转换,它只会骗大约发生了什么(所以编译)编译器,但在运行时它的冲击起来.
您可以使用以下代码将整数直接嵌入到格式字符串%d中%@:
tempString = [NSString stringWithFormat:@"%@%d%@%d", part1,num1, part2, num2];
Run Code Online (Sandbox Code Playgroud)
NSInteger只是常规"int"(数字)的奇特名称.NSString是对字符串对象的对象引用.一些数字类型(int和浮点)可以像这样直接在C中相互转换,但这两者根本不可互操作.听起来你可能会来自一种更宽松的语言?:)
sai*_*ech 18
在12月22日22:34回答,Ben Zotto:
一个字符串和一个整数是根本不同的数据类型,在Objective-C铸造为您在这种情况下,不会做一个转换,它只会骗大约发生了什么(所以编译)编译器,但在运行时它的冲击起来.
您可以使用%d而不是%@将整数直接嵌入到格式字符串中:
Run Code Online (Sandbox Code Playgroud)tempString = [NSString stringWithFormat:@"%@%d%@%d", part1,num1, part2, num2];NSInteger只是常规"int"(数字)的奇特名称.NSString是对字符串对象的对象引用.一些数字类型(int和浮点)可以像这样直接在C中相互转换,但这两者根本不可互操作.听起来你可能会来自一种更宽松的语言?:)
"请记住,@"%d"只能在32位上运行.如果您为64位平台编译,一旦开始使用NSInteger兼容性,您应该使用@"%ld"作为格式说明符." 作者:Marc Charbonneau
所以,解决方案:
tempString = [NSString stringWithFormat:@"%@%ld%@%ld", part1, (long)num1, part2, (long)num2];
Run Code Online (Sandbox Code Playgroud)
来源:Cocoa字符串编程指南 - 字符串格式说明符(需要iPhone开发人员注册)
| 归档时间: |
|
| 查看次数: |
34358 次 |
| 最近记录: |