¿Cómo descomprimir un gran archivo zip que contiene un archivo y obtener el progreso en bytes con Swift?

Intento descomprimir un archivo zip grande que contiene solo un elemento (más de 100 MB) y me gusta mostrar el progreso durante la descompresión.

Encontré soluciones en las que el progreso se puede determinar en función de la cantidad de archivos descomprimidos, pero en mi caso solo tengo un archivo grande dentro. ¿Entonces supongo que debe determinarse por la cantidad de bytes descomprimidos?

En realidad estoy usando SSZipArchive con el siguiente código que funciona bien:

    var myZipFile:NSString="/Users/user/Library/Developer/CoreSimulator/Devices/mydevice/ziptest/testzip.zip";
    var DestPath:NSString="/Users/user/Library/Developer/CoreSimulator/Devices/mydevice/ziptest/";


    let unZipped = SSZipArchive.unzipFileAtPath(myZipFile as! String, toDestination: DestPath as! String);

No encontré soluciones para esto.

¿Alguien tiene una pista, muestra o enlace a una muestra?

ACTUALIZAR: Parece que el siguiente código funcionaría según lo previsto, pero el controlador se llamará solo una vez (al final de la descompresión) cuando se descomprima el único archivo:

func unzipFile(sZipFile: String, toDest: String){

        SSZipArchive.unzipFileAtPath(sZipFile, toDestination: toDest, progressHandler: {
            (entry, zipInfo, readByte, totalByte) -> Void in


            println("readByte : \(readByte)") // <- This will be only called once, at the end of unzipping. My 500MB Zipfile holds only one file. 
            println("totalByte : \(totalByte)")


            //Asynchrone task
            dispatch_async(dispatch_get_main_queue()) {
                println("readByte : \(readByte)")
                println("totalByte : \(totalByte)")

                //Change progress value

            }
            }, completionHandler: { (path, success, error) -> Void in
                if success {
                    //SUCCESSFUL!!
                } else {
                    println(error)
                }
        })

    }

ACTUALIZACIÓN 2:

Como "Martin R" analizó en SSArchive, no es posible. ¿Hay alguna otra forma de descomprimir un archivo y mostrar el progreso basado en kbytes?

ACTUALIZACIÓN 3:

Cambié SSZipArchive.m después de que la solución fue explicada por "roop" de la siguiente manera. Probablemente alguien más pueda usar esto también:

FILE *fp = fopen((const char*)[fullPath UTF8String], "wb");
                while (fp) {
                    int readBytes = unzReadCurrentFile(zip, buffer, 4096);

                    if (readBytes > 0) {
                        fwrite(buffer, readBytes, 1, fp );
                        totalbytesread=totalbytesread+4096;
                        // Added by me
                        if (progressHandler)
                        {
                            progressHandler(strPath, fileInfo, currentFileNumber, totalbytesread);
                        }
                        // End added by me

                    } else {
                        break;
                    }
                }

Respuestas a la pregunta(2)

Su respuesta a la pregunta