#ios #printing #sdk #nsuserdefaults #peripherals
#iOS #печать #sdk #nsuserdefaults #периферийные устройства
Вопрос:
У меня есть приложение, которое использует SDK принтера чеков. Все работает отлично, но интеграция довольно сложна. Я хочу добавить еще один SDK, который подключается к другому принтеру, и попросить пользователя выбрать, какой принтер у него есть. Этот новый принтер представляет собой совершенно новый шарик из воска.
Я становлюсь подавленным, думая о том, сколько работы потребуется, чтобы заставить их работать одинаково хорошо. Например, если старому принтеру требуется 25 строк для печати чего-либо, новый SDK занимает 2. Таким образом, я не могу просто отправить новому принтеру то же NSOBject
самое.
Как я могу легко отслеживать, какой принтер выбран? Каков простой способ «перевести» информацию между двумя SDK? И как можно использовать то же NSUserDefault
самое для старого принтера, что и для нового? (для старого требуется 8 параметров, а для нового требуется только 1 или 2) Могу ли я написать какой-нибудь интеллектуальный класс, чтобы регулировать все это?
У меня прямо сейчас голова идет кругом.
Как люди обычно поддерживают несколько периферийных устройств при разработке iOS?
Комментарии:
1. Предполагая, что ваше приложение в настоящее время хорошо структурировано; отделив данные модели от сведений об устройстве из графического интерфейса от бизнес-логики, затем просто добавьте необходимые модули для нового устройства и напишите код. Это то, что мы делаем, пишем код.
2. Обычно это тот случай, когда правила наследования объектов. Имейте общий базовый класс, в котором есть только заглушки для всех функций, которые вам нужно сделать. Затем создайте подклассы для каждого принтера (потому что у вас может быть более двух) и переопределите заглушки для каждого отдельного принтера. Итак, если у вас есть принтер, вы создаете экземпляр его подкласса и вызываете одни и те же процедуры, независимо от того, какой принтер, и подкласс определяет правильную вещь. Другими словами, суперкласс содержит вызовы печати, а подклассы содержат код драйвера.
3. @OwenHartnett Спасибо за ваш ответ. Я был ленив и не хотел делать дополнительное кодирование, чтобы все стало гелевым. Я прикусил язык — все отлично работает!