Как я могу безболезненно добавить SDK в свой существующий проект, не «изобретая велосипед заново»?

#ios #printing #sdk #nsuserdefaults #peripherals

#iOS #печать #sdk #nsuserdefaults #периферийные устройства

Вопрос:

У меня есть приложение, которое использует SDK принтера чеков. Все работает отлично, но интеграция довольно сложна. Я хочу добавить еще один SDK, который подключается к другому принтеру, и попросить пользователя выбрать, какой принтер у него есть. Этот новый принтер представляет собой совершенно новый шарик из воска.

Я становлюсь подавленным, думая о том, сколько работы потребуется, чтобы заставить их работать одинаково хорошо. Например, если старому принтеру требуется 25 строк для печати чего-либо, новый SDK занимает 2. Таким образом, я не могу просто отправить новому принтеру то же NSOBject самое.

Как я могу легко отслеживать, какой принтер выбран? Каков простой способ «перевести» информацию между двумя SDK? И как можно использовать то же NSUserDefault самое для старого принтера, что и для нового? (для старого требуется 8 параметров, а для нового требуется только 1 или 2) Могу ли я написать какой-нибудь интеллектуальный класс, чтобы регулировать все это?

У меня прямо сейчас голова идет кругом.

Как люди обычно поддерживают несколько периферийных устройств при разработке iOS?

Комментарии:

1. Предполагая, что ваше приложение в настоящее время хорошо структурировано; отделив данные модели от сведений об устройстве из графического интерфейса от бизнес-логики, затем просто добавьте необходимые модули для нового устройства и напишите код. Это то, что мы делаем, пишем код.

2. Обычно это тот случай, когда правила наследования объектов. Имейте общий базовый класс, в котором есть только заглушки для всех функций, которые вам нужно сделать. Затем создайте подклассы для каждого принтера (потому что у вас может быть более двух) и переопределите заглушки для каждого отдельного принтера. Итак, если у вас есть принтер, вы создаете экземпляр его подкласса и вызываете одни и те же процедуры, независимо от того, какой принтер, и подкласс определяет правильную вещь. Другими словами, суперкласс содержит вызовы печати, а подклассы содержат код драйвера.

3. @OwenHartnett Спасибо за ваш ответ. Я был ленив и не хотел делать дополнительное кодирование, чтобы все стало гелевым. Я прикусил язык — все отлично работает!