swift @available函数装饰器在macOS上不工作

5cg8jx4n  于 2023-01-08  发布在  Swift
关注(0)|答案(1)|浏览(110)

以下函数将pdf文档的页面转换为NSImages。

@available(macOS 13.0, *)
func convertPDFPagesToImages(pdfDoc: PDFDocument)-> [NSImage] {
    
    let pageCount = pdfDoc.pageCount
    var images: [NSImage] = []
    for i in 0..<pageCount {
        let page = pdfDoc.page(at: i)
        let pdfKitView = PDFKitView(pdfDoc: pdfDoc, viewSize: CGSize(width: 600, height: 814), currentPage: .constant(page))
        let renderer = ImageRenderer(content: pdfKitView)
        if let cgImage = renderer.cgImage {
            let image = NSImage(cgImage: cgImage, size: NSSize(width: 600, height: 814))
            images.append(image)
        }
        
    }
    
    return images
}

错误:在作用域中找不到“ImageRenderer”。

我已经导入了SwiftUI。根据苹果的文档,图像渲染器应该可以从macOS 13中获得。这是一个bug还是我误解了@available装饰器?

lyr7nygr

lyr7nygr1#

请检查您的Xcode版本。Xcode 14.1是支持macOS 13开发的第一个版本。Xcode 14.0仅支持macOS 12.3。因此,在Xcode 14.1+上,您的代码应该可以正常编译。
另一方面,Xcode 14.0确实支持iOS 16.0,因此可以在iOS平台上使用ImageRenderer
您可以自由地在@available属性中编写任何看起来合理的版本,但是如果您没有SDK,您当然不能使用该版本中的任何内容。

相关问题