Вопрос

Я хотел бы поделиться общим форматом документа между iOS и OSX. Обратите внимание, что это не приложение MDI; Когда -либо будет один документ для сохранения/загрузки. Управление пользователем NSDOCUMent в стиле (например, сохранение, сохранение, открытие и т. Д.) Не требуется.

Самая большая проблема в том, что, похоже, нет общего формата кодирования документов, естественно совместимых с OSX и iOS (пока). Согласно руководству по программированию приложений на основе документов для iOS, похоже, что между классами, полученными в NSDOCUMent и UIDOCUMENT, требуется преобразование кодирования/декодирования. Я бы хотел, чтобы был универсальный механизм сериализации, совместимый со всеми устройствами в экосистеме Apple. Любые мысли, идеи, советы ценятся в этом отношении.

Могу ли я использовать класс, получаемый Uidocument, в моем приложении Mac OSX, и документ становится совместимым с iOS?

Это было полезно?

Решение

Нет, вы не можете использовать или подкласс Uidocument в приложении какао, потому что Uidocument не существует в какао.

Как в NSDocument, так и в Uidocument вы определяете формат, который будете использовать. Итак, просто реализуйте их обоих, чтобы использовать один и тот же формат для вывода и ввода.

Было бы не слишком сложно использовать препроцессор для настройки файловой пары, которая реализует подкласс NSDocument при строительстве для Mac и Uidocument при строительстве для iOS. Это помешало бы вам не соответствовать реализациям сериализации и десериализации, поскольку у вас будет только одна копия каждого и использовать ее на обеих платформах.

Другие советы

Ответ Питера выше правильный, но у меня есть предложение, которое не включает в себя предварительный процессор C (не доступный в Swift), который немного более похож на какао.

Посмотрите WWDC 2014 Session 233, чтобы настроить ваши приложения для iOS и Mac в одном проекте в качестве отдельных целей, а затем используйте категории в классе документов для реализации общей функции:

CommonFunctions.h    

@interface AppDocument (CommonFunctions)
- (void)function;
@end

-

CommonFunctions.m

@implementation AppDocument (CommonFunctions)

- (void) function {
      /// stuff here
}

@end

Ваш AppDocument Класс будет иметь 2 разных класса, унаследовавших от пользовательского интерфейса/NSDOCUMENT по мере необходимости для каждой платформы/цели, и каждая цель будет привлекать категории из общего места.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top