【问题标题】:Bool is not convertible to ObjCBoolBool 不能转换为 ObjCBool
【发布时间】:2014-10-23 04:56:56
【问题描述】:

我遇到了这个错误:

return (index == self.pagesTitles.count || index == NSNotFound) ? nil : viewControllerAtIndex(++index)

Bool 不能转换为 ObjCBool​​

我想做一个三元运算符来简化事情。有什么问题吗?

【问题讨论】:

  • 什么是索引类型?为什么要让 NSNotFound 参与进来?
  • 尝试将值存储在temp 变量中,然后返回它。 let rValue = UTTypeConformsTo(utiCF, typeCF) != 0 rValue = (index == self.pagesTitles.count || index == NSNotFound) ? nil : viewControllerAtIndex(++index) return rValue
  • 我已经在 Xcode-beta6 中尝试过了,它可以工作。 let index = 10 let count = 20 let result = (index == count || index == NSNotFound)
  • 提供更多代码。 index 是什么类型。声明返回的方法是什么类型?一个独立的示例确实是最好的,可以复制并粘贴到 Xcode 中来演示问题。调试可能需要减少问题,直到找到根本原因。当有多个语句而不是一个相当复杂的语句时,也更容易解决问题。分配给一个变量然后返回该变量使调试更容易,编译器会优化它。

标签: objective-c swift boolean ternary-operator


【解决方案1】:

确保您正确指定了返回对象的类型。在你的情况下 UIViewController?

func myMethod() -> UIViewController? {
    return (index == self.pagesTitles.count || index == NSNotFound) ? nil : viewControllerAtIndex(++index)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2023-03-20
    • 2011-09-28
    • 2015-04-25
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多