Входные данные для dictionary(fromTXTRecord:)
поступают из сети, потенциально извне приложения или даже устройства. Однако документы Apple сказать:
... Сбой утверждения, если txtData не может быть представлен как объект NSDictionary.
Невыполнение утверждения оставляет программиста (меня) без возможности обработки ошибки, что кажется нелогичным для метода, обрабатывающего внешние данные.
Если я запускаю это в Терминале на Mac:
dns-sd -R 'My Service Name' _myservice._tcp local 4567 asdf asdf
мое приложение, работающее на iPhone, дает сбой.
dictionary(fromTXTRecord:)
ожидает, что данные записи TXT (asdf asdf
) будут иметь форму key=val
. Если, как и выше, слово не содержит =
, метод не сможет его разобрать и не выполнить утверждение.
Я не вижу другого способа решить эту проблему, кроме как вообще не использовать этот метод и реализовать свой собственный синтаксический анализ, что кажется неправильным.
Я что-то упускаю?