2010-06-11 64 views
0

我有一個問題。 我想在CFDataRef中將我的對象「位置」轉換爲在TCP套接字中發送它。 我不知道我能做些什麼。 你能幫我嗎?轉換CFDataRef

@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]; 

    } 

回答

0

簡短的回答是使用NSKeyedArchiver。看起來像這樣並返回一個NSData對象(其是相同的 - 具有免費電話橋 - CFDataRef):(這從CopyPasteTile樣本代碼)

NSData *tileData = [NSKeyedArchiver archivedDataWithRootObject:theTile]; 

然而,如果你在機器之間複製數據......我想知道這是否是正確的方法?按照Binary Data Programming Guide

特別是,它不會big-endian和little-endian的 機器之間分佈 當處理 字節順序交換。 (在可可,使用NSValue爲 類型的數據。)

我不是說這是行不通的,但它肯定一些思考。