Protocol Buffers for iOS
来源:互联网 发布:龙虎榜数据哪里查询 编辑:程序博客网 时间:2024/05/02 20:07
安装 Protocol Buffers
1.安装 homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.安装 automake、libtool、protobuf。这里安装的 protobuf 是 google 官方版本。
brew install automakebrew install libtoolbrew install protobuf
3.利用brew下载安装了。protobuf就是我们想要的,另外两个是依赖库
git clone https://github.com/alexeyxo/protobuf-objc.git./build.sh
打开Xcode!新建一个工程!
然后有两个方法把protobuf添加到你的工程里面,一个是直接添加,一个是利用cocoapod
强烈推荐后者,因为cocoapods能够很方便的管理第三方类库,以后人家的工程升级了,你只需要一行
pod update
platform :ios , 7.0pod "ProtocolBuffers", "~> 1.9.9"
在保存之后,到终端,cd到工程里面
pod install --no-repo-update
在你的工程里面,新建一个文件夹,命名假如叫protobuf
在这个文件夹里面新建一个proto文件。例如要在本地储存用户信息,那么就新建一个user.proto
里面内容可以如下
package csdnblog;message PBUser {required string userId = 1; // 用户IDoptional string nick = 2; // 用户昵称optional string avatar = 3; // 用户头像optional string password = 7;optional string email = 8;optional string mobile = 9; // 手机号码optional string qqOpenId = 10; // QQ IDoptional string sinaId = 11; // SINA UserIDoptional string weixinId = 12; // WeChat UserID}
上面这个例子包括了几个要素。
一个是包名。包的概念在object c里面没有,java里面有,c++里面namespace也是差不多意思。
顺便提一下,oc里面一般在库名前面添加两个字母,起的作用差不多就是包的作用,作为类的上一层组织结构。
例如官方的NS,例如AFNetworking这种第三方类库的AF。
回到正题。编写pb文件,第二个要素是message
一个message就是一个整体,里面有哪些必要的内容,哪些可选的内容。详细的proto语法随便一找一大把,就不啰嗦了。
写好了proto,接下来就是编译这个proto文件,protobuf-objc这个类库会编译声称一些源码,是读写proto数据的接口API。
打开终端
cd到protobuf文件夹下
protoc --plugin=/usr/local/bin/protoc-gen-objc user.proto --objc_out="./"
大功告成,生成的文件就在protobuf中。
接下来就是真正运用到iOS的开发中了。
1,新建一个项目
2,将protobuf的库文件拖到项目中去,或者可以使用pod加入到工程中去
3,将生成的pb.m文件拖入到项目中去。
4,将protobuf的.m文件和pb.m文件加入到compile sources中去
5,加入protobuf的头文件和pb.h到需要引用的文件中去。
6,引用
PersonBuilder* myBuilder = [Person builder];[myBuilder setSerialNo:1];[myBuilder setTimestamp:time];[myBuilder setEmail:@"bob@example.com"];Person* person = [myBuilder build];NSData* data = [person data];
或者
Person* person = [[[[[Person builder] setId:123] setName:@"Bob"] setEmail:@"bob@example.com"] build];NSData* data = [person data];
7,反序列化
NSData* raw_data = ...;Person* person = [Person parseFromData:raw_data];
- Protocol Buffers for iOS
- Protocol Buffers for C
- Protocol Buffers for lua
- Protocol Buffers for Java
- iOS -- Protocol Buffers概览
- iOS-Protocol Buffers
- Protocol Buffers for Object-C
- Protocol Buffers for Object-C
- Protocol Buffers for Object-C
- Protocol Buffers for Object-C
- iOS -- Protocol Buffers 应用于 iOS 的尝试
- Useful links for mastering Google Protocol Buffers
- Protocol Buffers for Swift 集成小结
- ios用Protocol Buffers遇到的坑
- 在 iOS 中使用 Protocol Buffers
- iOS Protocol Buffers的搭建详细过程
- protocol buffers
- Protocol Buffers
- 已解决的问题课程笔记
- 数据挖掘和机器学习的基本概念
- Android广播机制
- 由StreamWriter.WriteLine 引发对C#多线程的深入思考(一)
- Nginx虚拟主机配置教程
- Protocol Buffers for iOS
- CocoaPods使用
- 【leetcode】Array——Search for a Range(34)
- Shell导出MySql部分表及数据
- 迷宫问题
- 微信企业号开发之图文消息
- STL中常见容器
- UVA 1584(p52)----Circular Sequence
- android studio 正规教程网站