Хранение более простых путей в Core Data для Mac OS X и iOS - PullRequest
1 голос
/ 28 марта 2011

Я разрабатываю приложение для iOS, в которое уже загружено содержимое CoreData.

Я пытаюсь создать приложение-импортер для командной строки Mac OS X, которое использует тот же xcdatamodel и импортирует исходные данные, которые я могу отправить вместе с настоящим приложением.

Пока все хорошо.

Однако одно из полей в модели - это преобразование, в котором я хочу сохранить путь Безье. К сожалению, Mac OS X использует NSBezierPath, а iOS использует UIBezierPath для хранения более дешевых путей.

Есть ли способ использовать двоичный класс UIBezierPath (и его заголовочный файл) из платформы iOS Simulator в моем проекте OS X?
Я не хочу преобразовывать свой проект для запуска в симуляторе, потому что я хочу иметь возможность запускать его из командной строки и передавать аргументы.
Должен быть способ заставить это работать, не так ли? Потому что платформа симулятора скомпилирована для архитектуры Mac, и компоненты GUI никогда не используются.

Я также ищу другие (креативные?) Способы решения этой проблемы ... Возможно, пользовательский NSValueTransformer или реверс-инжиниринг адаптации USCezierPath к NSCoding?
Может быть, я слишком ограничен, слишком сосредоточен на том, что, по сути, окажется бесполезной попыткой. Пожалуйста, не стесняйтесь указывать это в своем ответе, если считаете, что это так…

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Библиотека CKBezierPath эмулирует NSBezierPath для iOS.Не проверено, но попробуйте.; -)

0 голосов
/ 28 марта 2011

Кен Ферри (инженер Apple из группы разработчиков Cocoa) :

Формат контейнера архива с ключами взаимозаменяемы, однако определенный архив является взаимозаменяемым зависит от того, что в нем. Очевидно, если класс присутствует только на одной из iOS и Mac OS X, это проблема. За произвольные отдельные классы присутствуют на обеих ОС сложно сказать что-то слишком конкретно. Люди могут воспользоваться новой ОС для Отбросьте некоторые аспекты совместимости.

Если ваш ключевой архив содержит исключительно базовые классы наше намерение, чтобы они были как взаимозаменяемы между iOS и Mac OS X как между версиями Mac OS X. I не думаю, что у нас есть конкретные тесты убедитесь, что это работает, так что, ну, если это не для чего-то, подать ошибка.

NSBezierPath - это AppKit, так что вам придется вернуться к обратному проектированию. Это не может быть слишком сложно, потому что UIBezierPath и NSBezierPath, вероятно, оба зависят от CGPath, но это только предположение.

...