Оператор ^
определен для целочисленных типов, но не для Bool
. Вы можете добавить свое собственное определение, но оно не является строго необходимым. Операция XOR на Bool
такая же, как операция !=
. Вот таблицы истинности для A XOR B
и A != B
:
A B A^B A!=B
F F F F
F T T T
T F T T
T T F F
Итак, мы могли бы написать ваше выражение так:
(card != nil) != (appointment.instructor == nil)
Это довольно трудно понять, хотя. Если цель состоит в том, чтобы убедиться, что точно один из случаев верен, я мог бы написать это для ясности:
[(card != nil), (appointment.instructor == nil)].filter({ $0 == true }).count == 1