如何将这几种不同的值类型组合到NSData中?

时间:2016-07-24 23:20:08

标签: ios swift nsdata multipeer-connectivity

我需要使用MultipeerConnectivity将图像和一些字符串数组发送到另一个设备。在接收方,API为func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID),它只接收NSData个数据。但我需要发送这样的信息:

struct data{
var imageData:NSData?
var location:[String:String]?
var information:[String]?
var sliderInfo:[String]?
var questionsAndAnswer:[String:String]?
var secrets: String?
var tempts: Int?

}

dataStructure中有许多不同的值类型,但是如何将此自定义数据结构转换为NSData,然后在接收方进行解码?我在这个项目中使用Swift。

3 个答案:

答案 0 :(得分:3)

如果你把它变成一个采用NSCoding的NSObject子类,你将会有更轻松的时间。 NSCoding和NSKeyedArchiver是如何将任意数据序列化为NSData,然后再检索任意数据的方法。

答案 1 :(得分:0)

我用另一种方法来解决这个问题: 在发送方,发送... images : [ImageSchema] ... ,对其进行编码,并在接收方进行解码。对于Dictionary:[String:[String]],我再次发送。将其与其他数据分开。

NSData

答案 2 :(得分:-2)

NSMutableDictionary *mutDic = [NSMutableDictionary dictionary];
[mutDic setValue:data.imageData forKey:@"imageData"];
[mutDic setValue:data.location forKey:@"location"];
[mutDic setValue:data.information forKey:@"information"];
[mutDic setValue:data.sliderInfo forKey:@"sliderInfo"];