diff --git a/SSZipArchive/SSZipArchive.m b/SSZipArchive/SSZipArchive.m index 71cd042..456fbbd 100755 --- a/SSZipArchive/SSZipArchive.m +++ b/SSZipArchive/SSZipArchive.m @@ -537,8 +537,10 @@ // use a local filemanager (queue/thread compatibility) fileManager = [[NSFileManager alloc] init]; NSDirectoryEnumerator *dirEnumerator = [fileManager enumeratorAtPath:directoryPath]; + NSArray *allObjects = dirEnumerator.allObjects; + NSUInteger total = allObjects.count, complete = 0; NSString *fileName; - while ((fileName = [dirEnumerator nextObject])) { + for (fileName in allObjects) { BOOL isDir; NSString *fullFilePath = [directoryPath stringByAppendingPathComponent:fileName]; [fileManager fileExistsAtPath:fullFilePath isDirectory:&isDir]; @@ -560,6 +562,10 @@ [zipArchive writeFileAtPath:tempFilePath withFileName:tempFileFilename withPassword:password]; } } + complete++; + if (progressHandler) { + progressHandler(complete, total); + } } success = [zipArchive close]; }