Your comments

Automatic sync would be nice, but I understand that you might not have time to implement it. In the short term, please consider adding checking for remote changes. (I've already lost a little work because of this.)

All I really need to avoid data loss is for the warning dialog to only appear if the file has actually changed remotely. 


When you download a file from Dropbox, use this callback: (If you're using the deprecated callback, you'll have to remove it from your code, or this won't be called)

- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata;

Store the "metadata.rev" value somewhere, it identifies the revision of the file you just downloaded.

When you upload a file, include the metadata.rev value as the "withParentRev:" argument, if it's a new file, use "nil".

If the file has changed remotely, Dropbox will call the "uploadFileFailedWithError:" callback, at which point you can ask the user if they want to overwrite the remote file, and switch to the old upload method.   If it's successful, you'll want to store the metadata.rev that you get in the uploaded file callback.

This is the callback you should be using for uploading files, so you have access to  metadata.rev. You'll want to store the new metadata.rev value whenever you upload a file.

- (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath metadata:(DBMetadata*)metadata;

Hopefully these enhancements wouldn't take too much effort.  Please consider them when you find time.  It'd really help prevent data loss when uploading to dropbox.

(BTW, the editor itself is really, really nice - it looks like an insane amount of work has gone into polishing it.)