2011-09-12 2 views
1

위해 나는이 라이브러리를 사용하고 있습니다.프로토콜 버퍼는 오브젝티브 C

문제는 개체 필드를 설정하는 것과 같은 PB 개체를 수정하는 API를 찾을 수 없다는 것입니다.

그 PBData 같은 객체를 수정하는 것 같다 내가 가진 PBGeneratedMessage 세 API 중 하나 전화 : 그들 중 하나가 바로 새로운 하나가 기존의 것을 수정하지 만들

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

.

PBData* mutable_data(); 

그래서 난 그냥 기존 수정할 수 있습니다 이는 C++에 대한 PB와 같은 어떤 API입니다.

아이디어가 있으십니까? 감사!

답변

2

PBData 클래스는 읽기 전용입니다. 원하는 값으로 PBData를 만들려면 빌더 변형을 사용하면됩니다. 당신 말이 맞아,

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

그런 다음 코드에서이 같은 일을 할 것입니다 : 당신이 정의를 말해봐. 하지만 마침내 C++ 버전의 PB로 돌아 왔는데, 훨씬 빨라졌습니다 (프로파일 된만큼 10 배). –