二进制运算符'> ='不能应用于'Any'和'Int'类型的操作数

时间:2017-04-11 08:03:34

标签: ios swift tableview

我在tableview的viewforHeaderInSection方法中应用了以下代码。当我检查dictkey >= 3

时,我得到错误
  

二元运算符'> ='不能应用于'Any'和'Int'类型的操作数

else if finalDict.count > 0 {
        print(section)
        let dictKey =  selectedValueArray[section]
        print(dictKey)
        if self.finalDict.object(forKey: String(describing: dictKey)) != nil {          
           let diaryRowArray = self.finalDict.object(forKey:  String(describing: dictKey)) as! NSArray
           print(diaryRowArray.count)
           print(diaryRowArray)
                if dictKey >= 3 
                   var tempsection = section
                   tempsection = 0
                   let diarydescription = diaryRowArray[tempsection] as! DiaryModel
                   headerLabel.text = diarydescription.diary_category_name
                   print(headerLabel.text!)
                 }
             }
}

2 个答案:

答案 0 :(得分:2)

如果你知道它肯定会成为一个Int(如果它是一个表格行应该是它)你不能将它强制转换为Int

let dictKey = selectedValueArray[section] as! Int
if(dictKey >= 3) {
    print("It's equal to or greater than 3")
}

如果它可能是另一种类型(即字符串),你可以将它转换为Int然后检查它是否为

let dictKey = selectedValueArray[section] as? Int

if(dictKey != nil) {
    if(dictKey! >= 3) {
        print("It's equal to or greater than 3")
    }
}

或者第三种选择可以是使用if let语句

if let dictKey = selectedValueArray[section] as? Int {
    //check if its greater than 3
    if(dictKey >= 3) {
        print("It's equal to or greater than 3")
    }
}

编辑: 如果你的数组是一个字符串数组作为数字(即[“1”,“2”,“3”,“4”]),试试这个

let dictKey = Int(selectedValueArray[section]) 

如果你的数组是一个类型为any的数组,那么你将把它作为字符串数组转换,然后将值转换为int。

let stringArray = selectedValueArray as! [String]
let dictKey = Int(stringArray[section])

答案 1 :(得分:0)

您无法在dictkey之间进行比较,因为3是整数,而dictKey是Any。您必须输入强制转换guard let dictKey = selectedValueArray[section] as? Int else {return} 为:

Host

然后你可以比较它。