我即将研究 iPhone 上的蓝牙交互。现在,我读到唯一可以传输的对象是 NSData 对象。现在,我想转移我的“角色”对象。这个类看起来像这样:
@interface Character : NSObject <NSCoding>
{
UIImage *characterImage;
int health;
NSString *name;
}
-(void) initWithStats;
-(void) addToViewController: (UIViewController *)theView;
-(void) encodeWithCoder:(NSCoder *)encoder;
-(void) initWithCoder:(NSCoder *)decoder;
@end
现在,我知道我必须遵守 NSCoding 协议并实现这两种方法,但是,我不太确定在这里做什么。我知道我需要以某种方式创建此类的实例,然后在其他设备接收到 NSData 对象时“解压/解档”它们。
因此,非常感谢这里的任何建议:=)我对蓝牙编程非常陌生,以前从未使用过蓝牙编程或 NSData。所以提前致谢:)
/JBJ
听起来你真的只是问如何实施-encodeWithCoder:
and -initWithCoder:
。这非常简单:
-(void) encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:characterImage forKey:@"character image"];
[encoder encodeInt:health forKey:@"health"];
[encoder encodeObject:name forKey:@"name"];
}
就这样。-initWithCoder:
工作方式完全相同,只是您调用补充方法,例如:characterImage = [decoder decodeObjectForKey:@"character image"];
.
如果您需要提供特定格式的数据以与不支持存档格式的目标设备一起使用,您可以这样做并使用-encodeBytes:length:forKey:
方法来存储您喜欢的任何内容,或者以您自己的格式将数据写入 NSMutableData 对象,然后使用-encodeObject:forKey:
关于这一点。您的目标设备可能仍然需要在编码器存储的任何信封中查找您的数据;您可以通过从一系列已知的字节开始来使这变得更容易。我不确定这对于您的情况是否有必要,但请记住这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)