在我的项目中,在转换为swift 3之后,我的ViewController课程出现了一个新功能:
fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
switch (lhs, rhs) {
case let (l?, r?):
return l < r
case (nil, _?):
return true
default:
return false
}
}
Run Code Online (Sandbox Code Playgroud)
这个功能有什么作用?我为什么需要它?
在Swift 4中我试图将UITextField的文本长度与最小长度进行比较:
if textFieldPassword.text?.count >= 8 {
}
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
Binary operator '>=' cannot be applied to operands of type 'String.IndexDistance?' (aka 'Optional<Int>') and 'Int'
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是
textFieldPassword.text?.count == 8
Run Code Online (Sandbox Code Playgroud)
有人能帮助我吗?
在 Swift 3 中,这是一个编译错误,如果我使用>或<
let a: Int?
guard a > 0 else {return}
guard a < 0 else {return}
Run Code Online (Sandbox Code Playgroud)
编译错误:
可选类型“Int?”的值 未解开;你的意思是使用“!” 或者 '?'?
但如果我比较==或!=
let a: Int?
guard a == 0 else {return}
guard a != 0 else {return}
Run Code Online (Sandbox Code Playgroud) 在我之前使用的Swift 3之前嘿:
if CustomUser.sharedInstance.numberOfCredits > 0 {
}
Run Code Online (Sandbox Code Playgroud)
哪里numberOfCredits是Double?.现在我收到错误:二进制运算符'>'不能应用于'Double?'类型的操作数 和'国际'.为什么是这样?所以我将0更改为0.0并且获取二进制运算符'>'不能应用于'Double?'类型的操作数 和'双'.为什么这行不适用于Swift 3?