ios - iOS中是否可以直接解析API protobuf文件?

标签 ios swift protocol-buffers

我正在制作一个显示本地公交车实时位置的应用程序。我有一个 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/

相关文章:

rest - REST 是否支持 Protocol Buffer

iPhone 蓝牙

ios - 使用 Swift 以编程方式更改 View - 不起作用

ios - SwiftUI 在一种情况下查看层次结构警告,而不是另一种情况

ios - TableView 滚动底层顶栏

swift - 如何修复从底部切割的字体?

ios - 如何快速检测正在编辑哪个 TextView

ios - 构建 XCTest 时找不到文件错误

go - 如何将 prpBytes(描述​​中的链接 src)(ProposalResponsePayload protobuf 消息)反序列化为原始对象

iOS 9 Segue 导致应用卡住(没有崩溃或错误抛出)