2020-06-18

2020-06-18  本文已影响0人  流星1057

 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

        }

上一篇下一篇

猜你喜欢

热点阅读