有没有更好的方法从 PDF 文档中删除所有注释?

Is there a better way to remove all annotations from PDF document?

我需要使用 PDFKit 从 PDF 文档中删除所有注释。 这是我的解决方案:

这个解决方案对我不起作用,因为在一种情况下,我在迭代数组时遇到异常。

func removeAllAnnotations() {
        guard let documentCheck = document else { return }
        for i in (0..<documentCheck.pageCount) {
            if let page = documentCheck.page(at: i) {
                for annotation in page.annotations {
                    page.removeAnnotation(annotation)
                }
            }
        }
    }

如果你想避免“迭代时变异”的问题,只需创建你自己的数组本地副本,然后遍历它:

func removeAllAnnotations() {
    guard let document = document else { return }

    for i in 0..<document.pageCount {
        if let page = document.page(at: i) {
            let annotations = page.annotations
            for annotation in annotations {
                page.removeAnnotation(annotation)
            }
        }
    }
}

但是,不,我不知道有什么更好的方法来删除所有注释。

这是我想出的 objective-C 解决方案。这个函数不会遇到“mutate while iterates”崩溃!希望这会对某人有所帮助。

- (void)removeAllAnnotations {
    if (self.pdfDocument) {
        for (int i = 0; i < self.pdfDocument.pageCount; i++) {
            PDFPage *page = [self.pdfDocument pageAtIndex:i];
            PDFAnnotation *annotation = page.annotations.lastObject;
            while (annotation) {
                [page removeAnnotation:annotation];
                annotation = page.annotations.lastObject;
            }
        }
    }
}