marinofaggiana 5 жил өмнө
parent
commit
41efb1ddb7

+ 35 - 33
File Provider Extension/FileProviderEnumerator.swift

@@ -196,43 +196,45 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
     }
     
     func enumerateChanges(for observer: NSFileProviderChangeObserver, from anchor: NSFileProviderSyncAnchor) {
-            
-        var itemsDelete = [NSFileProviderItemIdentifier]()
-        var itemsUpdate = [FileProviderItem]()
-        
-        // Report the deleted items
-        //
-        if enumeratedItemIdentifier == .workingSet {
-            for (itemIdentifier, _) in fileProviderData.sharedInstance.fileProviderSignalDeleteWorkingSetItemIdentifier {
-                itemsDelete.append(itemIdentifier)
-            }
-            fileProviderData.sharedInstance.fileProviderSignalDeleteWorkingSetItemIdentifier.removeAll()
-        } else {
-            for (itemIdentifier, _) in fileProviderData.sharedInstance.fileProviderSignalDeleteContainerItemIdentifier {
-                itemsDelete.append(itemIdentifier)
-            }
-            fileProviderData.sharedInstance.fileProviderSignalDeleteContainerItemIdentifier.removeAll()
-        }
         
-        // Report the updated items
-        //
-        if enumeratedItemIdentifier == .workingSet {
-            for (_, item) in fileProviderData.sharedInstance.fileProviderSignalUpdateWorkingSetItem {
-                itemsUpdate.append(item)
+        DispatchQueue.main.async {
+            var itemsDelete = [NSFileProviderItemIdentifier]()
+            var itemsUpdate = [FileProviderItem]()
+            
+            // Report the deleted items
+            //
+            if self.enumeratedItemIdentifier == .workingSet {
+                for (itemIdentifier, _) in fileProviderData.sharedInstance.fileProviderSignalDeleteWorkingSetItemIdentifier {
+                    itemsDelete.append(itemIdentifier)
+                }
+                fileProviderData.sharedInstance.fileProviderSignalDeleteWorkingSetItemIdentifier.removeAll()
+            } else {
+                for (itemIdentifier, _) in fileProviderData.sharedInstance.fileProviderSignalDeleteContainerItemIdentifier {
+                    itemsDelete.append(itemIdentifier)
+                }
+                fileProviderData.sharedInstance.fileProviderSignalDeleteContainerItemIdentifier.removeAll()
             }
-            fileProviderData.sharedInstance.fileProviderSignalUpdateWorkingSetItem.removeAll()
-        } else {
-            for (_, item) in fileProviderData.sharedInstance.fileProviderSignalUpdateContainerItem {
-                itemsUpdate.append(item)
+            
+            // Report the updated items
+            //
+            if self.enumeratedItemIdentifier == .workingSet {
+                for (_, item) in fileProviderData.sharedInstance.fileProviderSignalUpdateWorkingSetItem {
+                    itemsUpdate.append(item)
+                }
+                fileProviderData.sharedInstance.fileProviderSignalUpdateWorkingSetItem.removeAll()
+            } else {
+                for (_, item) in fileProviderData.sharedInstance.fileProviderSignalUpdateContainerItem {
+                    itemsUpdate.append(item)
+                }
+                fileProviderData.sharedInstance.fileProviderSignalUpdateContainerItem.removeAll()
             }
-            fileProviderData.sharedInstance.fileProviderSignalUpdateContainerItem.removeAll()
+            
+            observer.didDeleteItems(withIdentifiers: itemsDelete)
+            observer.didUpdate(itemsUpdate)
+            
+            let data = "\(fileProviderData.sharedInstance.currentAnchor)".data(using: .utf8)
+            observer.finishEnumeratingChanges(upTo: NSFileProviderSyncAnchor(data!), moreComing: false)
         }
-        
-        observer.didDeleteItems(withIdentifiers: itemsDelete)
-        observer.didUpdate(itemsUpdate)
-        
-        let data = "\(fileProviderData.sharedInstance.currentAnchor)".data(using: .utf8)
-        observer.finishEnumeratingChanges(upTo: NSFileProviderSyncAnchor(data!), moreComing: false)
     }
     
     func currentSyncAnchor(completionHandler: @escaping (NSFileProviderSyncAnchor?) -> Void) {