QLTumbnailGenerator在多次调用(在实际设备上)iOS 13时开始失败

QLTumbnailGenerator在多次调用(在实际设备上)iOS 13时开始失败,ios,swift,ios13,Ios,Swift,Ios13,我试图创建多个钱包通行证(.pkpass)的缩略图,方法是在特定文件夹中的所有(大约200个)通行证上运行一个循环,并为每个通行证调用generateBestRepresentation(for:) 代码如下: let passesDirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("Passes") let size = CGS

我试图创建多个钱包通行证(.pkpass)的缩略图,方法是在特定文件夹中的所有(大约200个)通行证上运行一个循环,并为每个通行证调用generateBestRepresentation(for:)

代码如下:

let passesDirURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("Passes")
let size = CGSize(width: 1600, height: 1600)
let scale = UIScreen.main.scale

if let passURLs = try? FileManager.default.contentsOfDirectory(
    at: self.passesDirURL,
    includingPropertiesForKeys: nil,
    options: .skipsHiddenFiles
    ),
   !passURLs.isEmpty {
    for passURL in passURLs {
        // Create the thumbnail request.
        let request = QLThumbnailGenerator.Request(
            fileAt: passURL,
            size: size,
            scale: scale,
            representationTypes: .thumbnail
        )

        // Retrieve the singleton instance of the thumbnail generator and generate the thumbnails.
        let generator = QLThumbnailGenerator.shared
        generator.generateBestRepresentation(for: request) { thumbnail, error in
            if let error = error as? QLThumbnailError {
                print ("Thumbnail generation error: \(error)")
                print ("Thumbnail generation localizedDescription: \(error.localizedDescription)")
                print ("Thumbnail generation errorUserInfo: \(error.errorUserInfo)")
                print ("Thumbnail generation errorCode: \(error.errorCode)")
            } else {
                print ("Thumbnail generation OK")
                //do something with thumbnail here
            }
        }
    }
}
这在模拟器上运行得很好,但在实际设备(iphonexsmax)上,我迟早会出现错误,缩略图生成会在大部分过程中失败。输出如下所示:

Thumbnail generation error: related decl 'e' for QLThumbnailError(_nsError: Error Domain=QLThumbnailErrorDomain Code=3 "No thumbnail in the cloud for file:///private/var/mobile/Containers/Data/Application/DCF703F7-9A1A-4340-86EB-42579D678EEF/Documents/Passes/pass123.pkpass" UserInfo={NSErrorFailingURLKey=file:///private/var/mobile/Containers/Data/Application/DCF703F7-9A1A-4340-86EB-42579D678EEF/Documents/Passes/pass123.pkpass})
Thumbnail generation localizedDescription: The operation couldn’t be completed. (QLThumbnailErrorDomain error 3.)
Thumbnail generation errorUserInfo: ["NSErrorFailingURLKey": file:///private/var/mobile/Containers/Data/Application/DCF703F7-9A1A-4340-86EB-42579D678EEF/Documents/Passes/pass123.pkpass]
Thumbnail generation errorCode: 3
错误描述听起来很混乱(“云中没有用于文件的缩略图”),因为这些不是iCloud文件

由于单独调用缩略图生成时不会发生错误,因此这似乎是内存/性能问题。我尝试了多种方法来解决这个问题,包括在for循环中使用一个信号量,等待generateebstrepresentation的一个调用完成,然后开始下一个调用,这减少了但没有消除这个问题。它工作正常的唯一方法是在semaphore.wait()语句之后添加一个非常长的睡眠(5秒),但这不是可接受的解决方案

我尝试的另一种方法是使用saveBestRepresentation(正如苹果的文档中所建议的),但这并没有解决问题

有没有人遇到过类似的问题,并且能够找到一个可接受的解决方案