【问题标题】:Is it possible to send objects in packets through a network connection in Objective-C?是否可以通过 Objective-C 中的网络连接以数据包的形式发送对象?
【发布时间】:2012-06-03 19:57:23
【问题描述】:

目前我可以通过这样做来写入和接收包含 String 的数据:

NSString *anyString = @"anyString";
NSData *data = [anyString dataUsingEncoding:NSUTF8StringEncoding];
[self.outputStream write:[data bytes] maxLength:[data length]];

但是是否可以在数据中放置一个对象并将其写入输出流?如果是这样,怎么做?如果不可能,我是否应该通过套接字传递一个唯一标识符(NSString)并与我的对象列表进行比较,直到找到匹配项?

提前致谢。

【问题讨论】:

  • NSKeyedArchiver/NSJSONSerialization 是你的朋友。

标签: objective-c network-programming nsdata xcode4.3 outputstream


【解决方案1】:

您可以实现NSCoding 协议。然后您可以使用NSKeyedArchiver 序列化您的对象并使用JSONKit 将数据传输到远程服务器。

【讨论】:

  • 我已经为该对象实现了 NSCoding 协议,并导入了 JSONKit 文件,但我找不到任何关于如何传递/提供“NSData *data = [NSKeyedArchiver archivedDataWithRootObject:someObject]”的资源到 JSONKit。有什么想法还是我应该把它作为一个单独的问题?
  • JSONKit 应该为 NSData 提供类别。我现在无法提供任何示例,因为我是在 iPhone 上输入的。
  • 请注意,序列化只是传递对象的数据,类似于问题中的字符串。诚然,它可以是一个更复杂的数据结构,但是使对象成为对象的东西,而不仅仅是数据结构,是行为——也就是代码。你不能真正传输代码。接收方已经拥有该代码。如果它有类定义,那么它可以从序列化数据中重建一个对象。如果没有,那就不能。
最近更新 更多