【问题标题】:swift os x array binary operator error compare with nil != if statementswift os x数组二元运算符错误与nil比较!= if语句
【发布时间】:2015-07-07 10:23:41
【问题描述】:

我已经声明了一个元组数组:

 var graphDetailsArray: [Array<(graphType: String,  columnLabel: String, columnColor: NSColor, columnHeight: CGFloat, columnNumber: Int)>] = []

稍后在函数中,我会在激活一些代码之前检查这个数组是否为零:

    if graphDetailsArray != nil {  //some code here

这会在构建时引发错误:

二元运算符 '!=' 不能应用于类型 Array 和 nil。

我尝试了一系列不同的语法,但无法使其正常工作。

我们将不胜感激。如何检查空数组?

使用“graphDetails.isEmpty”和检查 nil 一样吗??

【问题讨论】:

  • 你只能检查可选参数是否为nil,因为你的数组不是可选的,你不能检查它是否为nil。如果您想查看数组是否包含任何值,请按照您的建议使用 isEmpty
  • ABS - 感谢您的澄清。这也解释了我遇到的另一个错误。我假设将数组声明为 var 会自动将其设置为可选。通过阅读更多内容,我现在意识到,如果我希望它是可选的,我需要专门添加“?”到数组声明的末尾...)>]? = [ ]。希望我理解正确。
  • 确实是这样:)

标签: arrays macos swift if-statement


【解决方案1】:

您的数组是一个数组,而不是可选数组。虽然可选数组可以是 nil,但 Swift 中的非可选数组永远不会是 nil。因此,它甚至不支持将其与 nil 进行比较的 if 语句。

替换

graphDetailsArray != nil

true

或完全删除 if 语句。

isEmpty 是完全不同的东西。一个数组可以有 0 个元素、1 个元素、2 个元素等。如果您的数组有 0 个元素,则 isEmpty 返回 true。这与数组为零完全不同。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2021-11-14
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多