Swift 3已经移除了Optional类型的比较操作,这在Swift evolution SE-0121: Remove Optional Comparison Operators这条中明确了这一点。

Swift 3之前,标准库定义了4个操作符以支持Optional类型,如下图所示。

不过Swift 3中,由于泛型不支持条件一致性判断,即没有通用的方法来定义在比较nil和非nil值时,应该得到怎样的值,所以实际结果可能不是预期的。所以,在Swift 3中,如果去比较两个Optional值,会给出编译错误,如下代码所示。而这一比较在Swift 3之前是没有问题的。

let dic1 = [
    "first": "123",
    "last": "234"
]

let dic2 = [
    "first": "123",
    "last": "968"
]

dic1["middle"] < dic2["middle"]		// value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'?

当然在SE-0121中也说了,等泛型更加成熟后,不排除会将这一特性再添加回来。