美文网首页
2020-06-18

2020-06-18

作者: 流星1057 | 来源:发表于2020-06-18 20:33 被阅读0次

     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

            }

    相关文章

      网友评论

          本文标题:2020-06-18

          本文链接:https://www.haomeiwen.com/subject/vwkpxktx.html