poroto3 坑 枚举_ProtocolBuffer 使用及 一些坑

Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。

ProtocolBuffer的优势

跨平台: ProtoBuf支持多平台和语言, 包括C++/Java/Python等等

序列化&反序列号: ProtoBuf支持直接将对象序列化成Data,也支持直接将Data序列化为对象类型

消息大小:一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一.

对于即时通信消息来说,减小数据量的大小非常有必要

使用地址: https://github.com/alexeyxo/protobuf-swift

1.ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.brew install automake

3.brew install libtool

4.brew install protobuf

5.git clone git@github.com:alexeyxo/protobuf-swift.git

6../scripts/build.sh

syntax = "proto2";

message msgName {

required int32 age = 1;

required string name = 2;

}

syntax = "proto2" 使用的版本号. 目前proto2/ proto3

message 类定义的关键字(这里面称为'消息')

msgName 类定义的名

required 序列化, 反序列化时必须有值

optional 序列化, 反序列化不一定有值

repeated 经常用在数组中

int32/ int64/ string/ 其他数据类型

1. 2.... 代表当前字段在当前类中的位置, 方便在序列化, 反序列化中查找赋值

数据类型

bool布尔类型1字节bool

double64位浮点数Ndouble

float32为浮点数Nfloat

int3232位整数、Nint

uin32无符号32位整数Nunsigned int

int6464位整数N__int64

uint6464为无符号整Nunsigned __int64

sint3232位整数,处理负数效率更高Nint32

sing6464位整数 处理负数效率更高N__int64

fixed3232位无符号整数4unsigned int32

fixed6464位无符号整数8unsigned __int64

sfixed3232位整数、能以更高的效率处理负数4unsigned int32

sfixed6464为整数8unsigned __int64

string只能处理 ASCII字符Nstd::string

bytes用于处理多字节的语言字符、如中文Nstd::string

enum可以包含一个用户自定义的枚举类型uint32N(uint32)enum

message可以包含一个用户自定义的消息类型Nobject of clas

最后一步就是pod 'ProtocolBuffers-Swift'

编译的时候遇到的坑

// 后面必须有;

syntax = "proto2";

// msgName { 中间不能有=

message msgName {

// 数字一定要排序, 而且从1开始, 数字后面必须加; 最后一个数字也必须加;

required int32 age = 1;

required string name = 2;

// } 后面可以加;

}

来源:https://www.cnblogs.com/MrTao/p/7285702.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值