2020-06-18
Protobuf For Swift
公司项目重构,为了优化网络请求响应的时间, 需将部份数据使用protobuf 序列化传输.开始踏坑.
导入步聚:
1.编译安装.proto格式转换器;
2.引入相应版本的protobuf(多用CocoaPods);
3.命令行转换成OC或swift文件并拖入项目中;
编译和安装
先下载,进入,列出tag,切换到对应分支,然后build
$ git clone https://github.com/apple/swift-protobuf.git
$ cd swift-protobuf
$ swift build
command + shift + .显示隐藏文件,进入.build/debug文件夹下,找到protoc-gen-swift,这是一个可执行文件,复制一份放到系统的PATH环境目录下,在mac也就是磁盘/usr/local/bin下面
引入项目 pod,pod install
pod 'SwiftProtobuf'
转换输出
cd到Person.proto目录,运行下列系统会自动PATH环境目录下的protoc-gen-swift转换,得到Person.pb.swift文件,拖入项目中即可
编译命令: protoc (文件名) --swift_out="./"
使用:
//从远端获取经过服务器序列化的data
let url = URL(string: "http://192.168.1.32:10004/noauth/lottery/data?version=1")!
guardletdata =try?Data.init(contentsOf: url)else{
print("error")
return
}
// 将获取到的data转为模型
guardletmodel =try?FullData(serializedData: data)else{
print("数据反序列化失败")
return
}
//模型序列化为data
guardletbufData =try? model.serializedData()else{
print("模型序列化失败")
return
}