2011-09-12 3 views
1

のために私はこのライブラリを使用しています。プロトコルバッファは、Objective-Cの

問題は、オブジェクトのフィールドを設定するようなPBオブジェクトを変更するAPIが見つからないということです。

PBDataのようなオブジェクトを変更することを思わ:PBGeneratedMessageは、私は3つのAPIのいずれかを呼び出す必要があり:

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

それらのいずれかが、単に既存のものを変更していない新しいものを作成します。 は、C++のためのPBのような任意のAPIがあります:

PBData* mutable_data(); 

だから私はただ、既存のものを変更することができます。

アイデア?ありがとう!

答えて

2

PBDataクラスは読み取り専用です。必要な値でPBDataを作成するには、Builderバリアントを使用します。あなたは正しい、

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

ありがとう:

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

は、次に、あなたのコードの中で、あなたがこのような何かをしたい:あなたはこの定義を持っていると言います。しかし、私は最終的にPBのC++バージョンに戻りました。これははるかに高速です(私がプロファイルした10倍)。 –

関連する問題