Можно ли напрямую анализировать файлы API protobuf в iOS? - PullRequest
1 голос
/ 24 июня 2019

Я делаю приложение, которое показывает в реальном времени местоположение местных автобусов. У меня есть API, который возвращает файл .pb (protobuf) с позициями транспортных средств. Я впервые обрабатываю proto buffers и не знаю, почему мы не можем разобрать их как файл JSON.

Я видел библиотеку с именем "Swift-Protobuf", но в ее документации. Они просят запустить команду для преобразования файла protobuf в быстрый объект. Но поскольку я делаю вызовы API каждую минуту, это возвращает файл protobuf. Как я могу выполнить эту команду каждый раз?

$ protoc --swift_out=. my.proto

Я просто хочу проанализировать эти .pb файлы в быстром объекте. Так что я могу использовать данные моего проекта.

1 Ответ

0 голосов
/ 24 июня 2019

Они просят запустить команду для преобразования файла protobuf в быстрый объект.Но поскольку я делаю вызовы API каждую минуту, это возвращает файл protobuf.Как я могу выполнить эту команду каждый раз?

Я думаю, что вы неправильно поняли документацию: вам не нужно запускать protoc --swift_out=. my.proto для каждого полученного вами файла .pb;Вы используете эту команду для генерации кода, который знает, как читать и записывать данные в соответствии со схемой, которую вы определили в файле .proto.Затем вы можете взять этот сгенерированный код и добавить его в свой проект iOS, а после этого вы можете использовать код для чтения и записи данных protobuf, соответствующих вашей схеме.

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

Итак, прежде чем вы сможете начать работу, вам понадобится файл .proto, который описывает формат данных, используемый любым, кто предоставляет данные о расположении шины, или вам понадобится тот, кто предоставит эти данные для использования SwiftProtobuf или аналогичного для создания синтаксического анализатора Swift для их файла .proto.

... Я понятия не имею, почему мы можем 'Разобрать их как файл JSON.

Ну, смысл формата protobuf в том, чтобы быть независимым от языка и быстрее / проще в использовании, чем JSON или XML, и одним из дизайнерских решений, которые, по-видимому, Googleсделано, чтобы пожертвовать читаемостью человека для размера / скорости.Таким образом, вы могли бы написать синтаксический анализатор для анализа этих файлов так же, как и данные JSON, но вам нужно узнать, как работает формат.Но намного проще описать данные, которые вы отправляете, и программа генерирует код.Одним из приятных аспектов этой схемы является то, что вы можете описать схему один раз, а затем сгенерировать код, который работает с этой схемой для нескольких языков, поэтому вам не нужно писать код отдельно для вашего приложения iOS, вашего приложения Android и вашего сервера.

...