Цель C для сериализации Python

1

У меня есть NSMutableArray, заполненный BeziarPaths. Я хотел бы сериализовать его так, чтобы он был доступен на Python. Кто-то предложил мне, что я могу попробовать GZIP + InkML или GZIP +JSON. Мне было интересно, что лучший способ сделать это. Я также очень новичок в этом, поэтому пример кода будет очень полезен.

благодаря

  • 0
    почему не SVG? Если бы это были просто пути Безье, то SVG был бы таким же хорошим и намного лучше поддерживаемым, не так ли?
  • 0
    SVG кажется очень интересным. Кто-нибудь может отослать меня к примеру кода, показывающего, как это сделать?
Показать ещё 3 комментария
Теги:
serialization

2 ответа

0
Лучший ответ

Выберите то, что вам больше всего нравится. Оба стандарта, но JSON - это общий формат, используемый для сериализации словарей и массивов, в то время как InkML фокусируется на рисовании связанных объектов.

Поддержка JSON доступна как в Python, так и в Objective-C, а InkML не имеет встроенной поддержки.

1

Недавно я использовал протокольные буферы для отличного эффекта в этой конкретной области. Он получил очень мало накладных расходов и работает лучше, чем родная цель Сериализация/десериализация сериализации (по крайней мере, на ipod touch, с которым я тестирую производительность, поскольку это самое медленное устройство, которое мы хотим поддерживать).

Мне потребовалось некоторое время, чтобы настроить их как новичка в разработке iOS, хотя (на стороне python было очень легко).

Это сообщение в блоге действительно помогает: http://nserror.me/blog/2011/06/03/protocol-buffers-and-xcode/

Подводя итог тому, как интегрировать буферы протокола в объектный проект C, мне потребовался целый день, чтобы собрать его, чтобы я мог надеяться, что кто-то в моей ситуации сочтет это полезным:

  • получить протокольные буферы отсюда
  • configure/make/make install
  • получить этот проект (что git clone https://github.com/booyah/protobuf-objc.git для ленивых)
  • autogen.sh/configure/make/make install
  • В protobuf-objc/src/runtime есть проект xcode. Откройте его, создайте, а затем снова закройте xcode. Очень важно, чтобы вы это делали.
  • откройте свой проект в Xcode. Перейдите на вкладку "правила построения" в целевом объекте. Добавьте настраиваемое правило сборки для файлов *.proto.

Сценарий:

/usr/local/bin/protoc --plugin=/usr/local/bin/protoc-gen-objc \ 
--proto_path=${INPUT_FILE_DIR} \
--objc_out=${DERIVED_SOURCES_DIR} \
${INPUT_FILE_PATH}

Выходные файлы:

${DERIVED_SOURCES_DIR}/${INPUT_FILE_BASE}.pb.h
${DERIVED_SOURCES_DIR}/${INPUT_FILE_BASE}.pb.m
  • скопируйте проект protobuf-objc в тот же каталог, в котором у вас есть.xcodeproj в
  • Добавьте ссылку на проект в protobuf-obj/src/runtime (просто перетащите в Finder в свой проект
  • В разделе "Фазы сборки" для вашей цели добавьте зависимость от ProtocolBuffers
  • В разделе "Настройки сборки" выберите "все" и добавьте следующие пути поиска заголовков: $ {SOURCE_ROOT}/protobuf-objc/src/runtime/Build/Products
  • В сводке для своей цели добавьте ссылку на.a файл, сгенерированный проектом ProtocolBuffers.
  • И с этого момента вы просто добавляете свои.proto файлы в проект (и в список файлов, которые нужно скомпилировать), и вы можете использовать буферы протокола

Ещё вопросы

Сообщество Overcoder
Наверх
Меню