gpt4 book ai didi

iphone - 自定义类上的 NSData?

转载 作者:行者123 更新时间:2023-12-03 20:44:35 24 4
gpt4 key购买 nike

我即将研究 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 协议(protocol)并实现这两种方法,但是,我不太确定在这里做什么。我知道我需要以某种方式创建此类的实例,然后在其他设备接收到 NSData 对象时“解压/解档”它们。

所以,非常感谢这里的任何建议:=)我对蓝牙编程非常陌生,以前从未使用过蓝牙编程或 NSData。所以提前致谢:)

/JBJ

最佳答案

听起来您实际上只是在问如何实现 -encodeWithCoder:-initWithCoder:。这非常简单:

-(void) encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:characterImage forKey:@"character image"];
[encoder encodeInt:health forKey:@"health"];
[encoder encodeObject:name forKey:@"name"];
}

仅此而已。 -initWithCoder: 的工作方式完全相同,只不过您调用了补充方法,例如:characterImage = [decoder debugObjectForKey:@"character image"];

如果您需要提供特定格式的数据以与不支持存档格式的目标设备配合使用,您可以这样做并使用 -encodeBytes:length:forKey: 方法来存储您喜欢的任何内容,或者以您自己的格式将数据写入 NSMutableData 对象,然后使用 -encodeObject:forKey: 。您的目标设备可能仍然需要在编码器存储的任何信封中查找您的数据;您可以通过从一系列已知的字节开始来使这变得更容易。我不确定这对于您的情况是否有必要,但请记住这一点。

关于iphone - 自定义类上的 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com