我正在制作一个显示本地公交车实时位置的应用程序。我有一个 API,它返回带有车辆位置的 .pb (protobuf)
文件。我是第一次处理 proto buffers
,我不知道为什么我们不能像 JSON
文件一样解析它们。
我看到了一个名为 "Swift-Protobuf"
的库,但是在它的文档中。他们要求运行命令将 protobuf
文件转换为 swift 对象。但是因为我每分钟都在调用返回 protobuf
文件的 API。如何每次都运行该命令?
$ protoc --swift_out=. my.proto
我只想将那些 .pb
文件解析成一个 swift 对象。这样我就可以在我的项目中使用这些数据。
最佳答案
They are asking to run a command to convert protobuf file into a swift object. But as I am making API calls every minute that returns the protobuf file. How can I run that command every time?
我认为您误解了文档:您不需要运行 protoc --swift_out=。 my.proto
用于您收到的每个 .pb 文件;您使用该命令生成知道如何根据您在 .proto 文件中定义的模式读取和写入数据的代码。然后,您可以获取生成的代码并将其添加到您的 iOS 项目中,之后您可以使用该代码读取和写入与您的架构匹配的 protobuf 数据。
I am making an app that shows the real-time location of local buses.
因此,在开始之前,您需要一个 .proto 文件来描述提供公交车位置数据的任何人所使用的数据格式,或者您将需要提供该数据的任何人使用 SwiftProtobuf 或类似工具为其 .proto 文件生成 Swift 解析器。
...I have no idea why we can't parse them like JSON file.
好吧,protobuf 格式的要点是与语言无关并且比 JSON 或 XML 更快/更容易使用,谷歌显然做出的设计决策之一是牺牲人类的可读性以换取大小/速度。因此,您可以编写解析器来解析这些文件,就像解析 JSON 数据一样,但您必须了解该格式的工作原理。但是描述您发送的数据并让程序生成代码要容易得多。这种安排的一个好处是,您可以一次性描述模式,然后生成适用于多种语言的模式的代码,因此您不必为 iOS 应用程序、Android 应用程序和服务器分别编写代码。
关于ios - iOS中是否可以直接解析API protobuf文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736310/