美文网首页
iOS _protobuf使用

iOS _protobuf使用

作者: 第x个等于4乘x的阶乘 | 来源:发表于2021-03-09 19:47 被阅读0次

    1.下载protobuf

    使用git的方式到开源社区下载protobuf,在终端种输入以下命令:

    git clone https://github.com/google/protobuf.git
    

    2.安装brew

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

    3.使用brew安装protoc

    brew install protobuf

    4.安装 automake

    brew install automake
    brew install libtool
    

    5.将ProtoBuf协议文件编译为OC文件

    protoc --proto_path=. --objc_out=. UpDriverPosition.proto
    

    protoc --proto_path=路径1--objc_out=路径2 XXXX.proto

    路径1 : 创建的proto文件所在目录
    路径2 : 转换后的文件输出路径
    XXXX.proto : 创建的proto文件名称
    例:
    在桌面创建放proto文件的文件夹 "MySrc", 在 "MySrc" 里创建proto文件auth.proto, 在桌面创建放转换后的文件的文件夹 "MyGen", 则在终端
    先cd 到桌面

    protoc --proto_path=MySrc --objc_out=MyGen MySrc/auth.proto
    执行命令后会发现在 "MyGen" 文件夹中出现 Auth.pbobjc.h / Auth.pbobjc.m, 这两个就是我们项目中需要的文件。

    6.将生成的文件拖到工程中

    1) 倒入头文件 设置接受model(link)

    #import <Foundation/Foundation.h>
    #import "LinkMessage.pbobjc.h"
    
    @interface ForwardLinkMessageApi : NSObject
    @property(nonatomic,strong)linkMessage*link;
    @end
    

    7. 实现方法

    
    #pragma mark - Private Methods 序列化
    
    - (nullable NSData *)encode:(linkMessage *)link {
    
     return [link data];
    
    }
    // 反序列化
    - (linkMessage *)decode: (nonnull NSData *)data {
    
     return [linkMessage parseFromData:data error:nil];
    
    }
    #pragma mark - Lazy Methods
    
    -(linkMessage*)link{
        if (_link == nil) {
            _link = [linkMessage new];
            _link.link = @"1111111";
            _link.iconLink = @"1111111";
            _link.title = @"111111";
            _link.dec =@"1111111";
        }
        return  _link;
    }
    

    8. 使用

     NSData *reader = [self encode:self.link];
     NSLog(@"%@", reader);
     linkMessage *linkObj = [self decode:reader];
     NSLog(@"%@", linkObj);
    

    相关文章

      网友评论

          本文标题:iOS _protobuf使用

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