gpt4 book ai didi

iphone - 核心数据实体的蓝牙传输

转载 作者:行者123 更新时间:2023-12-03 16:53:22 26 4
gpt4 key购买 nike

我将如何使用蓝牙来传输核心数据实体及其对应关系?我设置了三个具有反向关系的核心数据实体,一切正常,但我需要根据上下文将它们传输到另一台 iPhone,因为它不在另一台 iPhone 上的核心数据实体集中的相应表中。我知道如何通过蓝牙传输简单的东西,例如字符串和整数,但这是一个全新的水平,而且我大约 4 个月前才开始为 iPhone 编程。感谢各位专家的帮助!

编辑:

谢谢,但由于某种原因我不断收到此错误!我该怎么办?

2010-02-12 21:24:14.907 PitScout[92918:207] Failed to call designated initializer on NSManagedObject class 'Team' 
2010-02-12 21:24:14.907 PitScout[92918:207] *** -[Team setTeamNumber:]: unrecognized selector sent to instance 0x112b630
2010-02-12 21:24:14.908 PitScout[92918:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Team setTeamNumber:]: unrecognized selector sent to instance 0x112b630'

谢谢。

最佳答案

您需要以某种方式序列化对象以进行传输,然后重新插入到另一侧的上下文中。我建议研究 NSCoding 协议(protocol)和示例,它们将允许您使用 NSKeyedArchiverNSKeyedUnarchiver 将对象序列化为 NSData 用于传输(或如有必要,base64 编码为 NSString)。

首先确保您的模型对象实现 NSCoding:

@interface MyObject :  NSManagedObject <NSCoding>

然后在模型对象中实现以下方法来处理对象的编码和解码:

-(id)initWithCoder:(NSCoder*)coder
{
if (self = [self init])
{
self.myProperty = [coder decodeObjectForKey:@"myProperty"];
}

return self;
}

-(void)encodeWithCoder:(NSCoder*)coder
{
[coder encodeObject:self.message forKey:@"myProperty"];
}

使用 NSKeyedArchiver 将对象序列化为 NSData:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myObject];

使用 NSKeyedUnarchiver 反序列化:

MyObject *myObject = (MyObject *)[NSKeyedUnarchiver unarchiveObjectWithData:myData];

如果需要字符串,则必须对 NSData 进行 Base64 编码和解码,有关详细信息,请参阅此文章:How do I do base64 encoding on iphone-sdk?

关于iphone - 核心数据实体的蓝牙传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106241/

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