来自数据的imageView.image未显示

时间:2018-10-24 13:32:40

标签: ios swift multipeer-connectivity

我正在尝试在iPhone B上显示iPhone A的相机供稿。我通过将每个帧转换为Data对象,然后通过MultiPeer Connectivity将其发送到iPhone B,然后将数据转换回UIImage来实现。并显示它。

提取框架后,iPhone A发送它:

func sendImageAsData(image: UIImage) {

    if let imageData = image.pngData() {
        print(imageData)
        MultiPeer.instance.send(data: imageData)
    }
}

iPhone B接收并解析它:

func multiPeer(didReceiveData data: Data) {
    print(data)
    let receivedImage = UIImage(data: data)
    DispatchQueue.main.async {
        self.drawView.image = receivedImage
    }
}

但是我在iPhone B侧面看到的只是一个白色的屏幕。 iPhone B一侧的控制台输出显示接收到的字节数,因此我知道它至少正在接收数据。我还尝试使用image.jpegData(compressionQuality: 1)将图片转换为数据,但仍然只能看到白色的屏幕。

编辑:我在print(receivedImage)行之后添加了let receivedImage = UIImage(data: data)行,控制台输出为:

138990 bytes
nil
139089 bytes
nil
139085 bytes
nil
139492 bytes
nil

因此图像未显示,因为它是nil。任何有关原因的意见都会得到赞赏。

编辑2 :这是用于发送数据的MultiPeer.instance.send()函数。

 public func send(data: Data) -> Bool{
    if isConnected {
        do {
            let item = try NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true)
            try session.send(item, toPeers: session.connectedPeers, with: MCSessionSendDataMode.reliable)
            return true
        } catch let error {
            printDebug(error.localizedDescription)
            return false
        }
    }
    return false
}

0 个答案:

没有答案