乐虎游戏|乐虎国际登录|欢迎你

计算机在iOS开垦中应用Protobuf

日期:2020-04-15编辑作者:计算机资讯
Protobuf简介

protocolbuffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#计算机,、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

在MacOS上安装适用于Objective-C的Protobuf编译器

检查系统是否安装Homebrewbrew -v如果没安装Homebrewruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"安装Protobuf编译器和依赖文件brew install automake``brew install libtool``brew install protobuf从github克隆protobuf-objc,执行build.sh文件git clone https://github.com/google/protobuf.git``cd protobuf/objectivec/DevTools``./full_mac_build.sh编译.proto文件protoc --plugin=/usr/local/bin/protoc-gen-objc *.proto --objc_out="./"

PS:之后会生成两个文件 xxx.pbobjc.hxxx.pbobjc.m 把这两个文件拖到项目中即可使用。需要注意的是这个类不支持arc,所以要在 Build Phase -> Compile Sources 中在xxx.pbobjc.m文件加上-fno-objc-arc

将protobuf引入到项目中

看具体项目需要了,你可以选择cocoapod引入,也可以打包静态库引入项目,当然直接把相关文件放进项目也是可以的,第一种最简单了。我看往上前两种都给出教程了,就尝试了第三种方案,步骤如下:

  1. 找到objectivec文件夹,将除了Tests文件夹之外的文件拉入工程
  2. 找到GPBProtocolBuffer.m文件将引入的所有.m文件注释掉

如果不注释调,会报错duplicate symbol

使用protobuf序列化和反序列化数据
  1. 定义模型的Person.proto文件

     message Person { required int32 id = 1; required string name = 2; optional string email = 3; }
    
  2. 编译proto文件,得到Person.pbobjc.hPerson.pbobjc.m文件,拉到项目里面。

  3. 注意得到的文件是不支持arc模式的。在Build PhasesCompile Sources中,找到Person.pbobjc.m文件,设置Compiler Flags-fno-objc-arc

  4. 创建模型并将模型序列化为二进制

Person *person = [[Person alloc] init];person.id_p = 11;person.name = @"xiaoming";person.email = @"xiaoming@gmail.com";NSData *data = [person data]; // 序列化为二进制
  1. 将二进制反序列化为模型对象
Person *parsePerson = [Person parseFromData:data error:nil];NSLog(@"id = %d , name = %@, email= %@", parsePerson.id_p, parsePerson.name, parsePerson.email);

DEMO地址:ProtobufForObjectiveCDemo参考:

本文由乐虎游戏发布于计算机资讯,转载请注明出处:计算机在iOS开垦中应用Protobuf

关键词:

自个儿的局地iOS进级路上的素材采取

其实就是我个人在具备初级开发能力后,进一步的提升技术能力和知识面的途径。 ** 本文摘自同行说用户“星空”分...

详细>>

iOS开拓:多个方可实时加点的Chart

商厦项目有亟待用到胎儿心率监测,设计的分界面逻辑是内需一个得以表格,可以动态的在下边画上数据。有一些相...

详细>>

IOS TableViewCell嵌套webview

IMG_0521.JPG 我们开发中,在使用UITableView的时候经常会遇到这样的需求:tableview的cell中的内容是动态的。于是我们就在...

详细>>

乐虎国际登录iOS之Pod install VS Pod update

乐虎国际登录,此文为翻译文章,原文网址: 简介 大多数人使用CocoaPods的时候都会想当然的以为podinstall仅仅在第一...

详细>>