Как упаковать несколько данных в NSData и отправить/получить/обработать данные?

Я делаю небольшую карточную игру на iOS. Я использую GameKit/GKsession для передачи данных по сети.

Мой вопрос заключается в том, как "упаковать" несколько данных в NSData и отправить их. И когда сервер получает NSData, как его распаковать и правильно обработать информацию.

Например, я могу без проблем отправлять и получать NSString. Но моя игра имеет другой тип данных, который нужно отправлять и получать, например UIImage/NSString/NSArray/...

Я нашел образец проекта GKTank в SDK. Но мне действительно трудно это понять. По моему мнению, он определил несколько типов данных.

Может кто-нибудь сказать мне, как сообщить серверу, какие данные отправляет клиент (NSString?UIImage?) в этом методе:

- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context

person ChaosKIDs    schedule 11.07.2012    source источник


Ответы (1)


На самом деле вы ищете две вещи.

1) протокол, который беспокоит отправителя и получателя понимает;

2) способ «сериализовать» ваши объекты в тип данных, который подается в протокол, и «десериализовать» данные для объектов.

Для 1 у вас есть различные варианты, такие как JSON, XML (на основе строк) и протокол на основе байтов, такой как протокольный буфер.

Для 2 у вас есть различные парсеры, такие как SBJson, TBXML и protobuf, которые помогают вам кодировать и декодировать протокол, выбранный вами в (1).

person xingzhi.sg    schedule 11.07.2012
comment
Но я думаю, что использование JSON или XML слишком «тяжело» для моей простой карточной игры. в любом случае спасибо за ваш ответ. - person ChaosKIDs; 13.07.2012