比较整数时出错:二元运算符'< ='不能应用于类型' Int?'的操作数。和' Int'

时间:2017-10-23 20:30:07

标签: swift

我有以下实现:

class MyClass{
 static let sharedInstance = MyClass()
    public var someNumber:Int = 10

    private func doSomething(){

     if self?.someNumber <= 0 {

     }
    }
}

但是当我试图比较if是否小于或等于零时,我得到了这个错误:

enter image description here

如果我在此post上尝试解决方案,我会收到此错误:

Cannot force unwrap value of non-optional type 'Int'

你们中的任何人都知道如何修复此错误或者是否有任何相关工作?

3 个答案:

答案 0 :(得分:1)

您无需打开包装。 someNumber不是可选的。只是做:

class MyClass{
    static let sharedInstance = MyClass()
    public var someNumber:Int = 10

    private func doSomething() {
        if self.someNumber <= 0 {

        }
    }
}

答案 1 :(得分:1)

如果您需要self?,看起来您没有包含所有代码。也许代码真的处于弱自我的封闭状态?

当你调用它时,看起来好像是nil。如果是这样,你需要做其他事情,比如

if (self?.someNumber ?? 0) <= 0 {

}

这就是说,如果self是nil,那么使用0而不是someNumber。如果你总是想使用10,你可以在??之后使用它。

或者您可以if let检查值,并在else中执行完全不同的操作。

答案 2 :(得分:0)

我认为我们错过了一些代码。 self如何可以为空?只有当我遇到某种[weak self]块时,才会发生这种情况。在那种情况下,我先重新制作它:

guard let strongSelf = self else {
    return // Probably this ViewController or object got released after the long running operation
}

if strongSelf.someNumber <= 0 {
     // Do stuff
}