Конвертировать в CFDataRef - PullRequest
0 голосов
/ 11 июня 2010

У меня проблема. я хочу преобразовать мой объект "Position" в CFDataRef для отправки его в сокет TCP. Я не знаю, как я могу это сделать. Вы можете мне помочь?

@interface Position : NSObject {

    NSString *name;

    float valueX;
    float valueY;
    float valueZ;

}

-(BOOL)setValue:(NSString*)name:(float)valueX:(float)valueY:(float)valueZ;

@property (nonatomic,readwrite, retain)   NSString      *name;

@property (readwrite)   float      valueX;
@property (readwrite)   float      valueY;
@property (readwrite)   float      valueZ;


@end




//In another class after the correct connection.
    Position *tempPosition = [[Position alloc]init];

    for(int i=0; i<[arrayPosition count]; i++){
        tempPosition = [arrayPosition objectAtIndex:i];
        //I want have a CFDataRef of tempPosition for sending. dataSend is my CFDataRef variable
        CFSocketSendData(socketAccept, NULL, dataSend, 0);
        [NSThread sleepForTimeInterval:1];

    }

1 Ответ

0 голосов
/ 11 июня 2010

Краткий ответ - использовать NSKeyedArchiver.Похоже на это и возвращает объект NSData (который совпадает с - имеет бесплатный телефонный мост с - CFDataRef):

NSData *tileData = [NSKeyedArchiver archivedDataWithRootObject:theTile];

(Это из CopyPasteTile пример кода.)

Однако, если вы копируете данные между компьютерами ... Интересно, это правильный подход?В соответствии с Руководство по программированию двоичных данных :

В частности, оно не будет обрабатывать обмен байтов в порядке распределения при распределении между машинами с прямым и младшим порядком байтов.(В Какао используйте NSValue для типизированных данных.)

Я не говорю, что это не сработает, но об этом, безусловно, стоит подумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...