【问题标题】:Objective-C ternary operator resulting in @"null" or BooleanObjective-C 三元运算符导致 @"null" 或布尔值
【发布时间】:2014-10-14 06:55:34
【问题描述】:

我有这行:

watchAgain == nil ? @"null" : (watchAgain ? 1 : 0)

watchAgain 可以是nilYESNO

根据价值获得@"null"10,我最好的选择是什么?

目前我收到错误:Incompatible operand types ('NSString *' and 'int')

我是 Objective-C 的新手,所以我猜这可能是一个非常简单的解决方法!

编辑(上下文):

我的 iOS UI 中有一个切换状态,所以是或否。但是,我想向我的 Node.js 后端发送“他们没有选择打开或关闭”的第三个状态,因此我想发送一个“空”字符串...

【问题讨论】:

  • 忘记你已经编写的代码。你想做什么?您要执行的操作是什么?另外,warchAgain 是什么类型的?如果它是布尔值,那么它只能是 YES 或 NO。 Nil 无效。
  • 我的 iOS UI 中有一个切换状态,所以是 YESNO。但是,我想向我的 Node.js 后端发送“他们没有选择打开或关闭”的第三个状态,因此我想发送一个“空”字符串......
  • 返回 @"null" (这是一个(非常奇怪的)NSString 或某种文字整数值 1 或 0 是没有意义的。
  • 你能不能只记录“watchAgain”的值,这样我们就可以知道它是什么类型的对象了? watchAgain 肯定不是对象类型,将 * 从中删除,它应该可以工作。
  • 这种事情最好有一个枚举。从表面上看,我会说你在 Javascript 领域花费了太多时间。在像这样的低级语言(使用指针的强类型)中,您需要区分指针和原语。

标签: ios objective-c


【解决方案1】:

如果你正在设置按钮标题

NSString *titleForButton = watchAgain == nil ? @"null" : (watchAgain ? @"YES" : @"NO");

据我认为你想要实现的是根据 watchAgain 变量设置按钮标题,所以上面的 titleForButton 可能是你想要设置的标题。

你做错了什么

watchAgain == nil ? @"null" : (watchAgain ? 1 : 0)

给变量赋值是字符串值还是整数值,所以你应该让编译器清楚你是赋值字符串还是整数

【讨论】:

  • (这是一个多么有趣的问题!)只是 FTR,channi。这是完全错误的。它会将按钮标题设置为字符“null”!无论如何,这个问题与 UIButton 无关。
  • @channi,即使没有编辑,您在哪里看到与UIButton 相关的任何内容?!为什么有些人会无缘无故地假设一些事情?
猜你喜欢
  • 2019-04-08
  • 2021-07-08
  • 2020-11-25
  • 2013-08-13
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多