使用 ARC 将 NSUInteger 转换为字符串 [重复]

Posted

技术标签:

【中文标题】使用 ARC 将 NSUInteger 转换为字符串 [重复]【英文标题】:Convert NSUInteger to string with ARC [duplicate] 【发布时间】:2014-05-25 16:59:56 【问题描述】:

我正在尝试将 NSUInteger 转换为字符串,以便打印消息。通过搜索,我似乎需要使用 stringWithFormat,但我收到一个错误,即 ARC 不允许使用隐式强制转换。

这是有问题的行:

NSString *text = [[NSString stringWithFormat: (@"%li",  NSUInteger)];

我尝试在没有帮助的情况下将格式说明符更改为 %lu。

谢谢。

【问题讨论】:

试试 [NSString stringWithFormat: @"%li",unsignedinteger]; 为什么是括号?您要格式化的值在哪里? @matt - 重复错误。这个问题归结为无效括号的问题,而不是类型转换的问题。 @rmaddy 副本显示了要使用的代码行的完全正确形式 @matt 但这是一个不同的问题。仅仅因为答案相似并不会使其成为重复的问题。 【参考方案1】:

你可能有一个 NSUInteger 类型的变量,类似于

NSUInteger myNumber;

然后你可以把它转换成这样的字符串:

NSString *text = [NSString stringWithFormat:@"%li",  myNumber];

我现在更喜欢的一个解决方案是:

NSString *text = [NSString stringWithFormat:@"%@",  @(myNumber)];   

这有助于避免编译错误数字格式代码的警告(经过很长时间我仍然对它们感到困惑)。

【讨论】:

我确实在变量中有一个 NSUInteger,但该行给我的错误是“ARC 下不允许 NSUInteger 的隐式转换”。您的解决方案是我在网上找到的,但对我不起作用。 去掉括号。 @rmaddy 谢谢。我复制粘贴了原始代码并没有注意到它们。 @tangobango 立即尝试。我已经更新了代码。 @maddy 解决了。谢谢。添加括号是我在网上找到的,在这个想法失败后没有删除它们。

以上是关于使用 ARC 将 NSUInteger 转换为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

NSInteger 和 NSUInteger 在混合的 64 位 / 32 位环境中

int 或 NSInteger 到 NSUInteger 用于索引

0c-42-ARC模式下如何兼容非ARC的类

NSNumber 为 0 转换为 NSInteger/NSUInteger 变为 nil

将 iOS 项目转换为 ARC 时出现 Lipo 错误

使用 XCode 5.0.2 将问题从非 ARC 迁移到 ARC