I는이 문제를 해결하는 또 다른 방법을 사용 를 발신자 측에서, 수신기 측에서 그것을를 디코드 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 * /}? –
구조체가 NSCoding을 준수하도록 만들 수 없습니다. 그것은 NSObject 하위 클래스 여야합니다. –
"구조체를 이렇게 만들겠습니까?"아니오, 그건 내가 말한 것이 아닙니다. 나는 NSObject 하위 클래스를 말했다. 그건 구조체가 아니라 클래스입니다. 코코아의 도움을 청합니다. Swift 구조체로는 그렇게 할 수 없습니다. – matt