iOS _protobuf使用

2021-03-09  本文已影响0人  第x个等于4乘x的阶乘

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);
上一篇下一篇

猜你喜欢

热点阅读