Я создаю игру в объективе C, используя движок cocos 2d для iPhone.В настоящее время я отправляю пакеты данных клиентам и от них, используя структуры:
typedef struct
{
PacketType type;
CGPoint position;
int amount;
int playerId;
} PacketPlayerDamage;
Моя проблема заключается в том, что я хочу отправить строку в том же формате, в противном случае мне нужно внести некоторые довольно серьезные изменения, в идеалесработало бы следующее:
typedef struct
{
PacketType type;
NSString *name;
} PacketHello
Я полагаю, что это не сработает, так как при упаковке пакета для его отправки я делаю следующее:
PacketPlayerDamage packet;
packet.type = kPacketTypePlayerDamage;
packet.amount = amount;
packet.playerId = playerId;
NSData* sendPacket = [NSData dataWithBytes:data length:sizeof(packet)];
[self sendToAll:sendPacket];
Что не удается развернутьNSString и выдает ошибку, возможно, потому что он не знает размер / длину этой переменной в структуре.
Так как, на самом деле, я не хочу изменять способ, которым я обертываю или разворачиваю свои данныепакет (я конвертировал NSMutableDictionary в JSON, и все было хорошо, но это кажется шагом назад), но я хочу разрешить отправку строки (очевидно, фиксированная длина / размер строки, то есть 32 символа), мой вопрос....
Есть ли простой способ обработки строки фиксированной длины без указателя в целевом C, массива из 32 символов или чего-то подобного?
Я видел following:
UTF8String option1;
Str32 option2;
Они то, что я ищу?Если да, то как мне взять максимум 32 символа NSString и применить его к ним (и я думаю, что название не имеет отношения к делу ...)
Спасибо за помощь,
JT