You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Objective-C转Swift时按位或运算符|=的用法及改写咨询

问题解答

|= 运算符含义

|= 是Objective-C中的按位或赋值运算符,由于OC的BOOL类型本质基于整数实现,这段代码中它的实际作用等价于逻辑或赋值:只要右侧表达式结果为真,就将左侧的isSelected设为YES,已经为YES的状态不会被后续运算改回NO。
Swift中的Bool是独立的布尔类型,不支持直接使用按位运算符操作布尔值,直接用原生逻辑判断实现对应逻辑即可。

Swift 实现代码

原代码逻辑为:只要date和非空的date1是同一天,或者和非空的date2是同一天,isSelected就为真,最终控制选中层的隐藏状态,有两种常见实现方式:

可读性优先写法

var isSelected = false
if let date1 = self.date1, gregorian.isDate(date, inSameDayAs: date1) {
    isSelected = true
}
if let date2 = self.date2, gregorian.isDate(date, inSameDayAs: date2) {
    isSelected = true
}
rangeCell.selectionLayer.isHidden = !isSelected

简洁写法

let isSelected = (date1 != nil && gregorian.isDate(date, inSameDayAs: date1)) || (date2 != nil && gregorian.isDate(date, inSameDayAs: date2))
rangeCell.selectionLayer.isHidden = !isSelected

内容的提问来源于stack exchange,提问作者Evgeniy Kleban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:36:06