Protocol Buffers在Objective-C上的使用

6 篇文章 0 订阅
1.下载protobuf-ios https://github.com/mingchen/protobuf-ios,保存到本地目录protobuf
2.打开protobuf目录,编译protobuf,具体步骤见https://github.com/mingchen/protobuf-ios上的使用指南
3.编写addressbook.proto,有关protocol buffers参见https://developers.google.com/protocol-buffers/docs/style
 // See README.txt for information and build instructions.
package tutorial;

option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";

message Person {
  required string name = 1;
  required int32 id = 2;        // Unique ID number for this person.
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

// Our address book file is just one of these.
message AddressBook {
  repeated Person person = 1;
}

4.从addressbook.proto获取oc代码,执行以下命令:
  protoc --objc_out=. addressbook.proto
  会在当前目录生成Addressbook.pb.h和Addressbook.pb.m文件

5.Xcode新建一个Single View Application,名为ProtobufDemo

6.在ProtobufDemo下新建一个Group名为protobuf, protobuf下新建两个group分别为model、protobuf-ios
  其中, 将第四步生成的Addressbook.pb.h,Addressbook.pb.m添加到model目录下
       将第一步下载的protobuf-ios,Classes目录下的所有文件添加到protobuf-ios



7.在ProtobufDemo-Prefix.pch文件里,添加 #import <Foundation/Foundation.h>,注意在Xcode6上创建的工程默认是没有ProtobufDemo-Prefix.pch文件的,

需要手动创建,并设置Prefix Header参数


8.在ViewController里使用proton生成的类

<span style="background-color: rgb(255, 255, 255);"><span style="background-color: rgb(204, 204, 204);"><span style="font-size:14px;">- (void)viewDidLoad
{
    [super viewDidLoad];
    Person_Builder *builder = [[Person_Builder alloc] init];
    [builder setName:@"sword"];
    [builder setId:12];
    [builder setEmail:@"hjzhou@isoftstone.com"];
    Person *person = [builder build];
//
    NSLog(@"send person name:%@ userid %d email %@", person.name, person.id, person.email);
    
    Person_Builder *builder2 = [[Person_Builder alloc] init];
    [builder2 setName:@"sword1"];
    [builder2 setId:13];
    [builder2 setEmail:@"hjzhou@isoftstone.co2m"];
    
    Person *person2 = [builder2 build];
    //
    NSLog(@"send person2 name:%@ userid %d email %@", person2.name, person2.id, person2.email);

    
//
    NSData *personData = [person data];
    Person *receivePerson = [Person parseFromData:personData];
    NSLog(@"receive person name:%@ userid %d email %@", receivePerson.name, receivePerson.id, receivePerson.email);
    // Do any additional setup after loading the view, typically from a nib.
}</span></span></span>
源代码:https://github.com/heavensword/ProtobufDemoForiOS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值