Objective-C to Swift Bitwise XOR equal Operator ^ =

时间:2017-10-08 05:27:30

标签: objective-c swift

我在Objective-C中有这种代码,我想转换为Swift

+ (BOOL)isLocationOutOfChina:(CLLocationCoordinate2D)location {
  BOOL oddFlag = NO;
  oddFlag ^= (a.x +
                  (c.y - a.y) /
                  (b.y - a.y) *
                  (b.x - a.x) <
                  point.x);
  return !oddFlag;
}

我不知道如何处理Bitwise XOR等操作符来快速^=

我的转换错误:

Binary operator ^= cannot be applied to two 'Bool' operands

1 个答案:

答案 0 :(得分:2)

在Swift中,^运算符(以及^=运算符)仅适用于整数数据类型(例如Int)。它不适用于Bool

但请注意,在Objective-C代码中使用^=毫无意义。您始终以NO开头,然后使用YESNO进行异或。结果将始终是右侧的值。换句话说,NO ^ X始终为X。所以简单地做:

BOOL oddFlag = (a.x + ...);
在Objective-C中

。然后Swift翻译很简单。