在使用时会遇到很多的错误,将PB格式定义文件

2019-09-16 22:53栏目:大奖888官网登录
TAG:

如今要做四个新的类型供给用到Google的Protocol Buffer,所以近来两日从来在读书那个。在互连网看了累累人写的连锁博客,发掘她们写的配备景况的步骤不尽一样,况且无需那么复杂,所以就想写一篇最新的小说。 配置碰着:mac OS 10.11.1 本文若有描述错误之处,应接引导。

一、ProtocolBuffer

风行版本Protobuf3.3.0 在iOS中的使用(OC与斯维夫特命全权大使用同样)
实际职能仿照效法官方文书档案

在应用时会碰珍视重的荒谬,为了少走弯路,请耐心看。。。

Protocolbuffer(简称Protobuf或PB)是由Google推出的一种数据调换格式,它独自于言语,独立于阳台。Google提供了两种语言的达成:java、c++ 和 python,每一项实现都含有了对应语言的编写翻译器以及库文件。能够把它用于分布式应用之间的多少通讯或许异构情状下的数据交换。与思想的XML和JSON分裂的是,它是一种二进制格式,免去了文本格式转变的各个困扰,而且转变作用相当的慢,由于它的跨平台、跨编制程序语言的特点,让它越是普遍,尤其是网络数据交换方面日趋成为一种主流。

二、What are protocol buffers?

protocol buffers是一种灵活,高效,自动化的结构化数据种类化学工业机械制。类似于大家以往使用的XML和JSON。是谷歌(Google)集团推出出的。可是(**但是的前边都她妈是废话**)与理念的XML和JSON不一致的是,它是一种二进制格式,免去了文本格式调换的各类干扰,并且调换作用相当慢,由于它的跨平台、跨编制程序语言的特征,它越发普遍,非常是网络数据调换音信量相当大地点利用起来更为便利。

PB近期托管在GitHub,链接地址:
https://github.com/google/protobuf,
或者https://github.com/google/protobuf/releases(尽量选取后面一个,找到你所需的语言安装包)
源码的重大作用能够分为两局地:

1、PB编写翻译器:源码生成器,将PB格式定义文件**.proto(PB数据格式的一种概念文件)调换为指标源码(帮助C++,JAVA,Python,Objective-C,Javascript,PHP等格式),重要行职责令行操作。
2、PB基础库:完结体系化与反类别化调换进度的帮助

  • 对 象 >>>>二进制(序列化)
  • 二进制 >>>>对 象(反种类化)
    (把对象转变为字节系列的进度称为对象的种类化;
    把字节连串复苏为对象的长河称为对象的反体系化。)

PB最近托管在GitHub,链接地址::

三、Protoc 编辑器景况陈设

PB基础库:完毕指标->二进制数据的种类化、二进制数据->对象的反类别化这两个转移进度的帮忙;PB编写翻译器:源码生成器,将PB格式定义文件。proto(PB数据格式的一种概念文件)转变为对象源码(扶助C++,JAVA,Python等格式)。

配置protobuf编译器

第一将文件下载下来https://github.com/google/protobuf/releases

得了如今PB的风行版本为3.0.0-beta-2,已经投入了对Objective-C的支撑(别的在此之前低版本中也早已有OC扩大补助)。在使用cocoaPods的档案的次序里选用pod search ProtocolBuffers举办搜寻,找寻结果如下:

1、 配置protobuf编写翻译器情形

张开终端施行命令步入到文件的根目录:
$ cd protobuf-3.3.0
接下来逐个实行:
$ ./configure
$ make
$ make check
$ sudo make install
检验安装达成-使用命令:
$ protoc --version 或者查看帮助$ protoc -h
若是编写翻译顺利的话,便得以使用protoc命令了,今后便足以用这一个命令将.proto文件转变为区别语言的源代码文件了。

图片 1pod search ProtocolBuffers

2、使用PB编写翻译器编写翻译.proto文件

设置好PB,使用PB编写翻译器来生成咱们须要的数据类型文件。
在桌面touch个文本夹名字为Class,
$ cd desktop -> $ touch Class -> $ cd Class
在空文件夹Class 创制多少个Person.proto文件(名字自定义)
$ touch Person.proto
制造好后就定义一些数据类型(使用终端或编辑器都得以)
服从合法正式语法https://developers.google.com/protocol-buffers/ 编写通用代码
文本中写入:

syntax = "proto3";

message Person {
  string name = 1;
  int32 uid = 2;
  string email = 3;
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
  message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
  }
   repeated PhoneNumber phone = 4;
}

保存退出,命令行确定保证在Class文件夹中,实行命令:
$ protoc *.proto --objc_out=../Class
若没难点,那是文本夹中应当早已改换了model文件。
若报错,1、请检查命令;2、检查测验***.proto文件中的标点符号;

瞩目:本文是以ProtocolBuffers: 为例实行自己要作为表率服从规则的,因为它生成的代码协理ARC。

3、引入iOS工程

安装很简短,对着README操作贰次就能够,作者贴出本人在巅峰的命令行。需求输入的下令行依次为:1)展开终端,查看mac里面有未有装Homebrew,键入以下命令

一种接纳Pod格局引进

新建筑工程程PB德姆o,终端实施:
$ cd PBDemo
创建 Podfile文件
$ touch Podfile
编辑 Podfile文件
$ vim Podfile
步入文件后点击键盘(斯拉维尼亚语输入法) i 进入 insert气象 初始编制(小心标点符号

platform :ios,'8.0'
target 'PBDemo' do 
   pod 'Protobuf','~>3.3.0'
end

下一场实行保存, 点击esc 输入 :wq,回车。
只顾上面包车型地铁 pod 'Protobuf','~>3.3.0' 否则从未3.3.0版本,以往若有新本子,可先使用 $ pod search Protobuf查询下。
运用Pod来导入库
$ pod install
变成后退出工程,再度走入就能看到PB重视库了。现在选拔的时候切记如下两点:
① 后头以后要求利用Cocoapods生成的 .xcworkspace文件来展开工程,实际不是运用以前的.xcodeproj文件。
② 每一趟改动了Podfile文件,都急需再次推行二回pod update命令。

 **补充:** 执行pod install后,除了Podfile,还会生成一个名为
Podfile.lock的文件,它会锁定当前各依赖库的版本,之后即使多
次执行pod install也不会更改版本,只有执行pod update才会改变
Podfile.lock,这在多人协作的时候,这样可以防止第三方库升级
时候造成大家各自的第三方库版本不一致。所以在提交版本
的时候不能把它落下,也不要添加到.gitignore中。(转)

pod install 完后再行打开PB德姆o.xcworkspace 工程,
将编写翻译好的PB文件引进工程,如图:

图片 2

继而,生成的文本是不协理ARC,需求手动转一下

点击工程---Build Phases ---Compile Source 中的Person.pbobjc.m文件增加-fno-objc-arc保留变编写翻译suc。
如图:

图片 3

到此,使用Pod引进ProtocolBuffer就完了,正是一些测量检验了,如下:

在ViewController中引入Person.pbobjc.h头文件
参预测验代码:

    // 创建对象
    Person *person = [Person new];
    person.name = @"weiCL";
    person.uid = 20170810;
    person.email = @"cl9000@126.com";

    // 序列化为Data
    NSData *data = [person data];
    NSLog(@"NSData= %@", data);

    // 反序列化为对象
    Person *person2 = [Person parseFromData:data error:NULL];
    NSLog(@"name:%@ uid:%d email:%@",person2.name,person2.uid,person2.email);

OK,下一种格局直白引进时常会合世谬误,消除方法具体请看下边

brew -v

===========================================

2)若无设置Homebrew就选用下边包车型客车指令安装

另一种直接将相关类文件拖入工程

1、 新建多少个工程PB德姆o3,show in Finder 创造文件夹名叫:protocolbuf (此称呼可自定义,但前面面要选用其路线),和开创个Lib文件夹备用
2、展开下载好的protobuf-3.3.0(或流行版本),会有个objectivec的文书夹。拷贝里面装有的文本,放到上面创建的protocolbuf 文件夹中。

图片 4

图片 5

3、使用Xcode张开工程,将Lib文件夹引进工程,然后选中Lib文件夹,点击左下角“+”(Add Files to PB德姆o3), 引用protocolBuffer源文件到工程中
(源文件里面有七个工程安排文件:ProtocolBuffers_iOS.xcodeproj和ProtocolBuffers_OSX.xcodeproj,引用ProtocolBuffers_iOS.xcodeproj就好)。这里大家只引进库文件,另创设Lib文件只是为了方便处理。

图片 6

4、选江苏中华南理工科业余大学学学程公司程: targets —> Build Phases —> Link Binary With Libraries, 援用源码静态库文件:libProtocolBuffers.a

图片 7

5、在工程安装找寻静态库的头文件(pb文件在protocolbuf文件夹里面):
   targets —> Build Setting —> Search Paths —> Header Search Paths, 写入:$(PROJECT)/protocolbuf

图片 8

完成后 build 一下。suc
6、 将大家地点通过PB编写翻译器生成的数据模型文件Class文件夹(内含Person.proto,Person.pbobjc.h和Person.pbobjc.m)
拖入工程,(尽量利用Add File to ...引进)
因为不辅助arc, 所以必要在*.pbobjc.m设置-fno-objc-arc, 然后就能够利用了。具体目录如图:

图片 9

Build一下、suc 、实行测验、测量试验代码如上不重复了这里。

ruby -e “$(curl -fsSL

===========================================

Demo源码 : https://github.com/cl9000/ProtocolBufferDemo.git

如有毛病,不吝赐教,及时交流,共同进步。

末段,多谢参照他事他说加以考察的博文:
方式一:使用Pod
ProtocolBuffer for Objective-C 运转情形布置及运用
ProtocolBuffers-3 For Objective C (1)-简单的应用
办法二:直接引进
iOS之ProtocolBuffer搭建和演示demo

3)安装protobuf编写翻译器和所需的工具

brew install automakebrew install libtoolbrew install protobuf

切切实实演示:

Last login: Fri Jan 8 09:59:02 on ttys001wushangkundeiMac:~ wushangkun$ brew -v-bash: brew: command not foundwushangkundeiMac:~ wushangkun$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"**==>**** This script will install:**/usr/local/bin/brewPress RETURN to continue or any other key to abort**==>**** /usr/bin/sudo /bin/chmod g+rwx /usr/local/. /usr/local/bin**Password:**==>**** /usr/bin/sudo /usr/sbin/chown wushangkun /usr/local/. /usr/local/bin****==>**** /usr/bin/sudo /usr/bin/chgrp admin /usr/local/. remote: Counting objects: 3934, done.remote: Compressing objects: 100% (3777/3777), done.remote: Total 3934 , reused 2251 , pack-reused 0Receiving objects: 100% (3934/3934), 3.43 MiB | 888.00 KiB/s, done.Resolving deltas: 100% , done.From https://github.com/Homebrew/homebrew * [new branch] master -> origin/masterChecking out files: 100% (3936/3936), done.HEAD is now at ef28579 ipfs: update 0.3.10 bottle.**==>**** Installation successful!****==>**** Next steps**Run `brew help` to get startedwushangkundeiMac:~ wushangkun$ brew install automake**==>**** Installing dependencies for automake: ****autoconf****==>**** Installing automake dependency: ****autoconf**######################################################################## 100.0%In order to prevent conflicts with Apple's own libtool we have prepended a "g"so, you have instead: glibtool and glibtoolize.**==>**** Summary**

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于大奖888官网登录,转载请注明出处:在使用时会遇到很多的错误,将PB格式定义文件