从OBJC快速转换

问题描述

我从本指南构建相机应用程序:https://developer.dji.com/mobile-sdk/documentation/ios-tutorials/index.html 并迅速写出所有东西。 有人可以帮忙将其转换为快捷方式吗?

-(void)videoFeed:(DJIVideoFeed *)videoFeed didUpdateVideoData:(NSData *)videoData {
    [[DJIVideoPreviewer instance] push:(uint8_t *)videoData.bytes length:(int)videoData.length];
}

当我将其转换为这样的迅捷时:

func videoFeed(_ videoFeed: DJIVideoFeed,didUpdateVideoData videoData: Data) {
        DJIVideoPreviewer.instance().push(UInt8(videoData?.bytes ?? 0),length: (videoData?.count ?? 0))
    }

我遇到了错误

无法将类型“ UInt8”的值转换为预期的参数类型“ UnsafeMutablePointer?” 无法将类型“ UnsafeRawPointer”的值转换为预期的参数类型“ Int?”

请帮助。

解决方法

您可以使用官方代码示例GitHub

Right here

    func videoFeed(_ videoFeed: DJIVideoFeed,didUpdateVideoData videoData: Data) {
        guard videoFeed == feed else {
            NSLog("ERROR: Wrong video feed update is received!");
            return
        }
        videoData.withUnsafeBytes { (ptr: UnsafePointer<UInt8>) in
            let p = UnsafeMutablePointer<UInt8>.init(mutating: ptr)
            previewer?.push(p,length: Int32(videoData.count))
            
        }
    }

在下次删除帖子之前尝试搜索更好的内容