Objective-C的协议缓冲区

时间:2011-09-12 03:18:43

标签: objective-c protocol-buffers

我正在使用这个库:

ObjC的PB http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers

问题是我找不到修改PB对象的API,比如设置对象的字段。

似乎修改像PBData这样的对象:PBGeneratedMessage我必须调用三个API中的一个:

- (PBData_Builder*) builder;
+ (PBData_Builder*) builder;
+ (PBData_Builder*) builderWithPrototype:(PBData*) prototype;

他们中的任何一个只是创建一个不修改现有的新的。 有没有像PB for C ++这样的API:

PBData* mutable_data(); 

所以我可以修改现有的。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

PBData类是只读的。要使用所需的值创建PBData,只需使用构建器变体。假设你有这个定义:

message Point {
  required float latitude = 1;
  required float longitude = 2;
  required float altitude = 3;
}

然后在你的代码中你会做这样的事情:

Point_Builder* pointBuilder = [Point builder];
pointBuilder.latitude = ...;
pointBuilder.longitude = ...;
pointBuilder.altitude = ...;
ProtoPoint* point = [pointBuilder build];