implementation of NSMetadataQuery along with UIDocuments in swiftUI

I am trying to make a document based app in swiftUI with a custom UI. I want iCloud capabilities in my app. I am trying to use iCloud Document (No cloudKit) way for storing data on iCloud container. I am using UIDocument and it's working. It's storing data to iCloud and I am able to retrieve it back.

Now the thing is when I run the app on two devices (iphone and iPad) and make changes to a file on one device, the changes are not reflecting on the other device while the file or say app is open. I have to close the app and relaunch it to see the changes.

I know I have to implement NSMetadataQuery to achieve this but I am struggling with it. I don't know any objective-C. I have been searching on the internet for a good article but could not find any. Can you please tell how do I implement this feature in my app. I have attach the working code of UIDocument and my Model class. Thank you in advance !

UIDocument

class NoteDocument: UIDocument {
    var notes = [Note]()
    
    override func load(fromContents contents: Any, ofType typeName: String?) throws {
        if let contents = contents as? Data {
            if let arr = try? PropertyListDecoder().decode([Note].self, from: contents) {
                self.notes = arr
                return
            }
        }
        //if we get here, there was some kind of problem
        throw NSError(domain: "NoDataDomain", code: -1, userInfo: nil)
    }
    
    override func contents(forType typeName: String) throws -> Any {
        if let data = try? PropertyListEncoder().encode(self.notes) {
            return data
        }
        //if we get here, there was some kind of problem
        throw NSError(domain: "NoDataDomain", code: -2, userInfo: nil)
    }
}

Model

class Model: ObservableObject {
    var document: NoteDocument?
    var documentURL: URL?
    
    init() {
        let fm = FileManager.default
        let driveURL = fm.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")
        
        documentURL = driveURL?.appendingPathComponent("savefile.txt")
        document = NoteDocument(fileURL: documentURL!)
    }
    
    func loadData(viewModel: ViewModel) {
        let fm = FileManager.default
        
        if fm.fileExists(atPath: (documentURL?.path)!) {
            document?.open(completionHandler: { (success: Bool) -> Void in
                if success {
                    viewModel.notes = self.document?.notes ?? [Note]()
                    print("File load successfull")
                } else {
                    print("File load failed")
                }
            })
        } else {
            document?.save(to: documentURL!, for: .forCreating, completionHandler: { (success: Bool) -> Void in
                if success {
                    print("File create successfull")
                } else {
                    print("File create failed")
                }
            })
        }
    }
    
    func saveData(_ notes: [Note]) {
        document!.notes = notes
        
        document?.save(to: documentURL!, for: .forOverwriting, completionHandler: { (success: Bool) -> Void in
            if success {
                print("File save successfull")
            } else {
                print("File save failed")
            }
        })
    }
    
    func autoSave(_ notes: [Note]) {
        document!.notes = notes
        document?.updateChangeCount(.done)
    }
}

Note

class Note: Identifiable, Codable {
    var id = UUID()
    
    var title = ""
    var text = ""
}
implementation of NSMetadataQuery along with UIDocuments in swiftUI
 
 
Q