Буфер протокола для Objective-C - PullRequest
       10

Буфер протокола для Objective-C

1 голос
/ 12 сентября 2011

Я использую эту библиотеку:

PB для ObjC http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers.

Проблема в том, что я не могу найти API для изменения объекта PB, например, для установки поля объекта.

Похоже, что для изменения объекта типа PBData: PBGeneratedMessage мне нужно вызвать один из трех API:

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

Любой из них просто создает новый, не модифицируя существующий.,Есть ли такой API, как PB для C ++:

PBData* mutable_data(); 

Так что я могу просто изменить существующий.

Есть идеи?Спасибо!

1 Ответ

2 голосов
/ 21 мая 2012

Класс 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];
...