我有问题。 我希望在CFDataRef中将我的对象“Position”转换为在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];
}
答案 0 :(得分:0)
简短的回答是使用NSKeyedArchiver
。看起来像这样并返回一个NSData
对象(与 - 具有 - CFDataRef
的免费电话桥相同):
NSData *tileData = [NSKeyedArchiver archivedDataWithRootObject:theTile];
(来自CopyPasteTile示例代码。)
但是,如果你在机器之间复制数据......我想知道这是否是正确的方法?根据{{3}}:
特别是,它不会处理 分布式时的字节顺序交换 在big-endian和little-endian之间 机器。 (在Cocoa中,使用NSValue 打字数据。)
我不是说它不会起作用,但它肯定是需要考虑的事情。