'[Any?]'不能转换为'Anyobject?'

时间:2015-01-21 19:09:49

标签: arrays swift struct

我在这一行中发现了这个错误:如果我的代码缓存=== 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
            }
}

1 个答案:

答案 0 :(得分:1)

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

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

我认为该功能的逻辑存在错误。