Protocol buffers在iOS中的使用(Swift)

一. protocol buffers 简介

Protobuffer是一个类似JSON的一个传输协议,其实也不能说是协议,可以认为是一种传输数据格式类似JSON,XML。但是比JSON更加轻量。消耗更小的带宽。
跨语言,这是它的一个优点。它自带了一个编译器,protoc,只需要用它进行编译,可以编译成JAVA、python、C++代码,暂时只有这三个,其他就暂时不要想了,然后就可以直接使用,不需要再写任何其他代码。连解析的那些都已经自带有的。JSON当然也是跨语言的,但这个跨语言是建立在编写代码的基础上,iOS开发使用protobuf可以添加第三方库即可集成开发环境进行使用。
官方资料:
https://developers.google.com/protocol-buffers/docs/overview

二. 环境集成

在终端中输入:

  • $ brew install protobuf-swift
    然后输入:
  • $ git clone https://github.com/alexeyxo/protobuf-swift.git
    下载完成之后,进行解压,然后使用终端,进入到其解压文件下:
    依次在终端中执行:
  • $ ./scripts/build.sh
    等待完成之后推出终端

三. 创建.proto文件

我们这里写一个Person.proto文件

Protocol buffers在iOS中的使用(Swift)_第1张图片
创建一个Person.proto文件

四. 利用protoc的插件生成对应的.swift文件

使用终端进入Person.proto文件路径下。
终端输入命令:

  • protoc --proto_path=. --swift_out=. Person.proto
    完成之后生成.swift文件
Protocol buffers在iOS中的使用(Swift)_第2张图片
生成对应的Person.proto.swift文件

五. 将对应的.swift文件添加到工程中

新建一个工程,之后将Person.proto & Person.proto.swift添加到工程中。(注:此工程需要使用第三方的框架,可以使用Cocoapods进行导入)

导入第三方框架
Protocol buffers在iOS中的使用(Swift)_第3张图片
导入的第三方框架
将文件导入到工程中

之后 Command+B 编译一下,会发现报错。

Protocol buffers在iOS中的使用(Swift)_第4张图片
报错信息

简单粗暴的方法,直接干掉。

Protocol buffers在iOS中的使用(Swift)_第5张图片
注释错误信息
注释错误信息

然后在进行一次编译,报错信息根据Xcode的提示在进行修改,
最后Command+B 编译一下,可以看到,工程没有错误了。

六.对protobuf Buffer数据的序列化与反序列化

创建Person的实例化对象,并且给其属性赋值,序列化为data类型,可以用于网络传输,反序列化为Person的实例化对象,可以之前请求数据获取Data Model。

Protocol buffers在iOS中的使用(Swift)_第6张图片
序列化与反序列化

在Swift工程中进行的序列化与反序列化需要注意的是与OC中不同,需要进行异常处理。

七.总结

protobuf数据格式的使用,提高了程序员开发效率,由于数据的轻量,所占到了更少的带宽,提高程序的效率。只需要前期与后台定义好.proto文件,得到的data的数据,可以直接反序列化为data model,一定程度的提高了开发效率。

Demo地址
https://github.com/CarsonChen0312/ProtobufDemo-Swift.git

你可能感兴趣的:(Protocol buffers在iOS中的使用(Swift))