我正在摸着这个。编辑不喜欢它,编译器更喜欢它 - 但他们不同意原因。
cardRemoveTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true, block: { [weak self] (_) in
guard let self = self else {
return
}
//…
}
XCode编辑器: 条件中的模式匹配需要'case'关键字
CardDeck.swift:31:28:无法转换'CardDeck'类型的值?预期的参数类型'_OptionalNilComparisonType'
我所要做的就是避免被迫展开自我。为什么我不能?如果我可以,怎么样?
答案 0 :(得分:0)
我认为真正的问题是使用self
作为变量名称。 self
是Swift中的保留关键字,因此请使用其他内容,可能是uself
:
cardRemoveTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { [weak self] _ in
guard let uself = self else { return }
// use uself
}
注意:您可以使用反引号(``)包围self
以将其用作变量名称,但我不推荐它,因为您有在你使用它的任何地方都这样做。使用另一个变量名更容易。