我有以下实现:
class MyClass{
static let sharedInstance = MyClass()
public var someNumber:Int = 10
private func doSomething(){
if self?.someNumber <= 0 {
}
}
}
但是当我试图比较if是否小于或等于零时,我得到了这个错误:
如果我在此post上尝试解决方案,我会收到此错误:
Cannot force unwrap value of non-optional type 'Int'
你们中的任何人都知道如何修复此错误或者是否有任何相关工作?
答案 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
}