我用另一種方式來解決這個問題: 發送側,發送Dictionary:[String:[String]]
,編碼和解碼是在接收端。對於NSData
,我再次發送。從其他數據中提取它。
let imageData = UIImageJPEGRepresentation(self.detailImage!, 1.0)
let msg = ["clickHidenInfo":[clickHidenInfo],"swipeInfo":upDownLeftRight,"sliderInfo":slideHiddenInforation,"locationInfo":["x1,y1,info","x2,y2,info"],"qa":["what's your name","Jerry"],"hints":["hints I provide"],"tempts":["tempts you can use"]]
//sender:
let msgData = NSKeyedArchiver.archivedDataWithRootObject(msg)
do
{
try self.session?.sendData(imageData!, toPeers: (self.session?.connectedPeers)!, withMode: .Unreliable)
print("succee")
}
catch{
print("failure")
}
do
{
try self.session?.sendData(msgData, toPeers: (self.session?.connectedPeers)!, withMode: .Unreliable)
print("succee")
}
catch{
print("failure")
}
//receiver side
dispatch_async(dispatch_get_main_queue()){
let dict = NSKeyedUnarchiver.unarchiveObjectWithData(data)
if dict == nil
{
self.guessImage.image = UIImage(data: data)
self.guessImage.reloadInputViews()
}
else
{
let result = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? Dictionary<String,[String]>
let a = result!["swipeInfo"]
print("\(a![0])")
}
}
你的意思是讓結構像這樣:struct data:NSCoding {/ * something * /}? –
您無法使Struct符合NSCoding。它必須是一個NSObject子類。 –
「你的意思是讓結構像這樣」不,這不是我說的。我說NSObject的子類。這是一個類,而不是一個結構。你需要在這裏獲得可可的幫助;你不能用Swift結構來做到這一點。 – matt