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
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