【问题标题】:Variables, NSInteger not working in Xcode变量,NSInteger 在 Xcode 中不起作用
【发布时间】:2014-09-19 03:56:25
【问题描述】:

ARC 不允许将“NSInteger”(又名“int”)隐式转换为“UILabel *” 好的,这就是我想要做的 - 我正在关注 youtube 上的教程,我在 Xcode 的故事板上的 ViewController 上有一个标签,并试图使用标签在第一个屏幕(视图控制器)上保持“高分”和.text(见下文):

  HighScore =[[NSUserDefaults standardUserDefaults] integerForKey:@"HighScoreSaved"];
    HighScore.text = [NSString stringWithFormat:@"High Score: %li", (long)HighScore];

我确实在我的 .h 文件中声明了 NSInteger = HighScore,它已包含在内,但我仍然收到“隐式转换”错误报告。有什么线索吗?

【问题讨论】:

  • 高分是整数吧?整数没有文本属性。第二行需要有你的标签 property.text 的名称而不是 HighScore.text
  • 你能举个例子吗?
  • @rdelmar 基于消息:“'NSInteger'(又名'int')到'UILabel *'的隐式转换”这意味着HighScoreUILabel,因为消息意味着该代码试图在发布的代码的第一行将NSInteger(来自integerForKey: 调用)分配给UILabel *HighScore)。
  • 天哪,我的坏人我偶然将 UILabel 和 NSInt 命名为同一个东西,所以我想你们都是对的

标签: objective-c memory nsinteger


【解决方案1】:

您的HighScore 变量似乎是UILabel。您不能将 NSUserDefaults 中的值分配给标签。

试试这个:

NSInteger score = [[NSUserDefaults standardUserDefaults] integerForKey:@"HighScoreSaved"];
HighScore.text = [NSString stringWithFormat:@"High Score: %li", (long)score];

顺便说一句 - 考虑使用标准命名约定。变量和方法名称应以小写字母开头。类名以大写字母开头。

【讨论】:

  • 是的,我通常这样做,但我是 Xcode 的新手,并且基本上按照教程进行操作,哈哈
  • 你能分享教程的链接吗? @PICKme
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2014-09-23
  • 2016-06-08
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多