有没有更好的方法从 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;
}
}
}
}
我需要使用 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;
}
}
}
}