У меня есть метод для создания почтового запроса. Этот запрос может иметь x количество параметров, но ни один из них не является обязательным. Есть параметры типа boolean (они передаются в виде строк со значениями «true» или «false» (не мое решение, это API).
Вот проблема. Объявление моего метода содержит все параметры, которые принимаются как часть запроса post. Проблема заключается в том, что запрос возвращает разные результаты, если логический параметр равен true, равен false или отсутствует.
Идентификатор моего метода что-то вроде
-(void) createRequestWithID:(NSString *)id translate(NSNumber *)translate onlyLastVersions:(NSNumber *)onlyLastVersions
Мой метод является частью фреймворка, который будет использоваться и вызываться другими разработчиками. Это означает, что я не могу контролировать то, что они передают параметрам, таким как translate, который является логическим (я использую NSNumber в качестве оболочки).
И тут возникает проблема. Мне нужно иметь возможность определить, был ли метод pasing translate как true, false или nil. Потому что для этих случаев у меня будет запрос как translate = "true", translate = "false" или перевод не будет присутствовать в запросе.
Мне нужен способ различать истину, ложь и ноль.
Тестируя на gbd, чтобы попытаться найти способ его дифференцировать, я получаю:
(gdb) p translateFALSE
$ 5 = (NSNumber *) 0x0
(gdb) p translateNIL
$ 6 = (NSNumber *) 0x0
(gdb) po translateFALSE
Невозможно напечатать описание объекта NIL.
(gdb) po translateNIL
Невозможно распечатать описание объекта NIL.
(gdb) po [класс translateFALSE]
Невозможно напечатать описание объекта NIL.
(gdb) po [класс translateNIL]
Невозможно напечатать описание объекта NIL.
Так что я не вижу способа сделать это.