Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心数据实体的蓝牙传输_Iphone_Cocoa_Cocoa Touch_Core Data_Bluetooth - Fatal编程技术网

Iphone 核心数据实体的蓝牙传输

Iphone 核心数据实体的蓝牙传输,iphone,cocoa,cocoa-touch,core-data,bluetooth,Iphone,Cocoa,Cocoa Touch,Core Data,Bluetooth,我将如何使用蓝牙传输具有相应关系的核心数据实体?我有三个设置了反向关系的核心数据实体,它们都可以正常工作,但我需要根据上下文将它们传输到另一台iPhone,因为它不在另一台iPhone的核心数据实体集中的对应表中。我知道如何通过蓝牙传输简单的东西,比如字符串和整数,但这是一个全新的水平,大约4个月前我才开始为iPhone编程。谢谢各位专家的帮助 编辑: 谢谢,但出于某种原因,我一直收到这个错误!我该怎么办 2010-02-12 21:24:14.907 PitScout[92918:207] F

我将如何使用蓝牙传输具有相应关系的核心数据实体?我有三个设置了反向关系的核心数据实体,它们都可以正常工作,但我需要根据上下文将它们传输到另一台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
协议和示例,这些协议和示例将允许您使用
NSKeyedArchiver
NSKeyedUnarchiver
将对象序列化到
NSData
以进行传输(或在必要时将base64编码为
NSString

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

@interface MyObject :  NSManagedObject <NSCoding>
使用
NSKeyedArchiver
将对象序列化为
NSData

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myObject];
使用NSKeyedUnachiver反序列化:

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

如果需要一个字符串,那么您必须对
NSData
进行base64编码和解码,有关详细信息,请参阅本文:

您需要以某种方式序列化对象以进行传输,然后重新插入到另一端的上下文中。我建议查看
NSCoding
协议和示例,这些协议和示例将允许您使用
NSKeyedArchiver
NSKeyedUnarchiver
将对象序列化到
NSData
以进行传输(或在必要时将base64编码为
NSString

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

@interface MyObject :  NSManagedObject <NSCoding>
使用
NSKeyedArchiver
将对象序列化为
NSData

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myObject];
使用NSKeyedUnachiver反序列化:

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

如果需要字符串,那么您必须对
NSData
进行base64编码和解码,请参阅本文了解详细信息:

尝试序列化
NSManagedObject
实例将失败,因为它们直接绑定到它们来自的
NSManagedObjectContext

您需要将它们转换为另一个数据结构,然后传输它们。JSON和XML在这方面都很好,因为您可以使用KVC从
NSManagedObject
中获取数据,并将其转换为
NSDictionary
,然后可以轻松地转换为中间格式


一旦将它们转换成中间格式并通过网络发送,您就可以轻松地将它们重新构建到目标
NSManagedObjectContext
,而不会出现问题。

尝试序列化
NSManagedObject
实例将失败,因为它们直接绑定到它们所使用的
NSManagedObjectContext
来自

您需要将它们转换为另一个数据结构,然后传输它们。JSON和XML在这方面都很好,因为您可以使用KVC从
NSManagedObject
中获取数据,并将其转换为
NSDictionary
,然后可以轻松地转换为中间格式


一旦将它们转换成中间格式并通过网络发送,您就可以轻松地将它们重新构建到目标
NSManagedObjectContext
中而不会出现问题。

这样做可能有些过分,但一种尚未让我失望的方法是SLIP,RFC 1055 1988版。多年来,我一直使用它将数据块映射成7或8位ASCII流,以便在我遇到的每种媒体上传输。然后使用反向或对其进行一些修改,将流转换回另一端所需的配置。RFC中有C代码的示例。我总是使用Phil Karn的建议,在数据包的开头和结尾使用相同的字符

这样,只需要一个例程来处理流。它会吞噬字符,直到遇到SOP/EOP。选择此选项是为了处理在无线链路空闲等待数据时可能在输入端积累的噪声。菲尔在其他文章中提到了这一点

我通常使用调试工具运行的系统使用的\x0D或\x0A作为回车符,并使用常用的反斜杠“\”作为转义字符。偶尔使用另一个控制代码或使用不同的控制字符值来减小数据包大小是很方便的。系统as的使用允许添加SLIP代码和一些修改的终端程序作为监视器和手动将数据包输入流的工具

我总是发现,如果数据包中的第一个字符表示另一端的选项,我就有足够的选项。当然,必须提供某种形式的错误检查和/或错误恢复以及重新传输屏蔽数据包的能力。对于通过高度可靠的链路发送的小数据包,一个简单的校验和就可以了,或者在这种情况下,使用三个矿化火山作为天线站点进行传输,而这三个站点之间的距离比一个人想要的要远一些,这就需要一个高度冗余的Fowarad纠错算法了。

SLIP的用途非常广泛,可以从16位Motorola 68HC11获取数据,并在32位Intel系统上重新构建数据,前提是程序员将数据反转并处理16位和32位数据之间的偏移量

戈登

戈登·库格
斯蒂尔沃特,好的

这可能是杀伤力过大了,但一种尚未使我失败的方法是SLIP,RFC 1055 1988版。多年来,我一直使用它将数据块映射成7或8位ASCII流,以便在我遇到的每种媒体上传输。然后使用反向或对其进行一些修改,将流转换回所需的配置