Changed keys to include a "!" prefix so they are not automatically sync'd between devices.
Added the ability to apply zip compression to the Whole Store file prior to an upload so that the transfer time between local Dropbox account and cloud is minimized. The code will also decompress the file when it is downloaded from the cloud to the device. Similar to the encryption option, I added BOOL values to the App Sync Manager, Doc Sync Manager, and Operation entities that indicate whether or not to compress the Whole Store. For now, that is set during the Application Sync Manager configuration process and then it carries through to the Doc Sync Manager and Upload/Download operations.

Current Gaps - I only implemented this for the Dropbox integration mode. I'm sure it could benefit the FileSystem mode as well (and Drew's iCloud mode) but I didn't have time to implement and test those at this time.

The compression code is based off of SSZipArchive. The only change was the addition of a defined constant to use as a file suffix reference.
Added methods to allow sync manager delegate calls to announce upload/download progress changes during whole store moves. This allows the app to provide a realtime progress indicator for the user. For now this is only implemented on Whole Store uploads and downloads.
Changed the order of encryption and compression so that the compression is done first. Doing the compression on an encrypted file was resulting in a file barely smaller than the original, whereas doing the compression first is giving good compression results regardless of whether encryption is on or off. Also modified the download store code to not fail out if the decompression is unsuccessful. This is for the use case where a previous version of an app using TICDS that has a whole store sitting on a remote without compression is then downloaded by the new version which assumes compression should be on all the time. In this case, the code will try to decompress and if the decompression fails, then the compression steps back out and the file is handled as if compression was not used.
Added background task identifier properties to general TICDSOperation class and TICDSDocumentSyncManager class, along with methods to be run before and after each significant process starts up. The methods will force the app to continue running after the app has moved into the background. This will ensure all operations will complete post backgrounding, and is also book ends the synchronization process to ensure it's multiple operations all complete post-backgrounding.
Added methods to cancel any operations in the "Other Tasks" queues for both the ApplicationSyncManager and DocumentSyncManager. Also moved the assignment of property values during registration process to before the uploading of store to ensure that they are set before this operation is created.
Commenting out the progress log statements to make the logs easier to review.
Added a BOOL flag to both sync managers and general operation class that will indicate whether or not the class should be allowed to continue processing when the app goes into a background state. In addition to the flag, a new backgroundTaskID has been added which is used to by iOS to track each operation when it is running in the background. Whenever an operation is completed, we now assign this backgroundTaskID which lets the operation run in after the app goes to the background state. In addition, there are delegate statements added to the operation and sync manager classes that ask if a given operation should be allowed to run in the background state. If the delegate responds NO, then the operation is flagged as such. When the appDelegate indicates the app is going to the background, a method is run to review all queued TICDS operations to see if they are allowed to run in the background or not. if they are, then they continue. If they are not, then a cancel request is sent to the op. This allows the operations to be shut down more orderly than if the app just cuts them off after the 5 second background limit. It also gives the programmer an option to support certain apps in the background, while letting others be cancelled.
Merge of latest develop branch to CPTDevelopment
Merging latest Upstream/Develop branch
corrected some property definitions that were throwing warnings
Merge branch 'develop' into CPTDevelopment
Merge branch 'develop' into CPTDevelopment
Changed the counter starting value to correct a bug where the count exceeded the total number of items to cycle through.
Merge branch 'develop' into CPTDevelopment
Correcting a log message definition
Added checks to ensure that a nil key is not passed to a "removeObjectForKey:" method.
Adding a workaround to a situation where the sync change folder is not present during the vacuum operation.
Bug fixes for CPT integration