【问题标题】:'[Any?]' is not convertible to 'Anyobject?''[Any?]' 不能转换为 'Anyobject?'
【发布时间】:2015-01-21 19:09:49
【问题描述】:

我在这一行中发现了这个错误:如果在我的代码上缓存 === nil:

struct  dataArray {
    var dataById = Dictionary<String, Any>()
}

var id :String?

func dataBegin() {
     let idString = id as String!
     let byCategory = [dataArray().dataById[idString]]

     if byCategory === nil {  //error:'[Any?]' is not convertible to 'Anyobject?'
     // some code
            }
}

【问题讨论】:

  • 该行的意图是什么? === 是标识运算符没有意义,除非 lhs 和 rhs 都是指向对象实例的变量。其次,你刚才说byCategory是一个数组,所以它永远不可能是nil

标签: arrays swift struct


【解决方案1】:

=== 是身份运算符,应该用于检查两个引用是否指向同一个实例。您可能想使用 == 来检查 nil。

但是,byCategory 变量被初始化为非可选数组,因此它不能为 nil,因此无法检查它是否为 nil。

我认为该函数的逻辑有误。

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2018-04-18
    • 2014-10-16
    相关资源
    最近更新 更多