Search code examples
objective-ccocoansprogressindicator

Cocoa - Application Freezes During Loading Data From XML


I am loading a huge amount of data from an XML file. This data is "freezing" the application. I would like to display a progress bar in the time that the data is being loaded.

How would I know that much of the operation has been completed so that I can change the percentage shown of the progress bar? Thanks. [answered]

Edited: The main problem is that the application freezes during loading due to the large amount of data to be parsed. Some have suggested using a background thread to load and parse the data.. Is that viable?


Solution

  • Read the file into memory @ 4k at a time? Show the process of loaded bytes vs file size?

    Additionally figure out total number of lines and what current line your parser is on.

    https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html#//apple_ref/occ/instm/NSXMLParser/lineNumber

    Assuming you are using NSXMLParser

    The "freezing" is coming from you doing the load/parsing on the main thread. If you can us GCD trying doing a dispatch_async ( ) and sending updates to your main thread on completion and to update progress.