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);
网友评论