相关疑难解决方法(0)

转换为swift 3后,视图控制器中出现奇怪的通用函数

在我的项目中,在转换为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)

这个功能有什么作用?我为什么需要它?

ios swift swift3

39
推荐指数
1
解决办法
3124
查看次数

二进制运算符'> ='不能应用于'String.IndexDistance?'类型的操作数 (又名'Optional <Int>')和'Int'

在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

15
推荐指数
1
解决办法
8847
查看次数

当相等运算符可以时,为什么 Swift 的大于或小于运算符不能比较可选项?

在 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)

optional swift

5
推荐指数
1
解决办法
2404
查看次数

为什么Swift 3中没有这个有条件的工作?

在我之前使用的Swift 3之前嘿:

if CustomUser.sharedInstance.numberOfCredits > 0 {
}
Run Code Online (Sandbox Code Playgroud)

哪里numberOfCredits是Double?.现在我收到错误:二进制运算符'>'不能应用于'Double?'类型的操作数 和'国际'.为什么是这样?所以我将0更改为0.0并且获取二进制运算符'>'不能应用于'Double?'类型的操作数 和'双'.为什么这行不适用于Swift 3?

ios swift swift3

0
推荐指数
1
解决办法
1057
查看次数

标签 统计

swift ×4

ios ×2

swift3 ×2

optional ×1