DropBlocks is a wrapper for the Dropbox iOS SDK that lets you use blocks instead of delegate callbacks.
Instead of making a call like this:
[restClient loadFile:path intoPath:destinationPath];
and then implementing these callbacks:
- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata {
NSLog(@"Yay, my file loaded. Let me go find that progress view so I can dismiss it ...");
}
- (void)restClient:(DBRestClient*)client loadProgress:(CGFloat)progress forFile:(NSString*)destPath {
NSLog(@"Got some file load progress, let me go find that progress view so I can update it ...");
}
- (void)restClient:(DBRestClient*)client loadFileFailedWithError:(NSError*)error {
NSLog(@"Uh oh, something went wrong with the file load. Let me go figure out which one that was ...");
}
With DropBlocks you do it all in one place, like so:
UIProgressView* progressView = ... //make me a progressView and present it
[DropBlocks loadFile:path intoPath:intoPath:destinationPath completionBlock:^(NSString* contentType, DBMetadata* metadata, NSError* error) {
[progressView removeFromSuperview];
if (error) {
NSLog(@"Uh oh, something went wrong with this file load. I'd better do something about that.");
} else {
NSLog(@"Yay, my file loaded. My work here is done.");
}
} progressBlock:^(CGFloat progress) {
progressView.progress = progress;
}];
I highly recommend that you use CocoaPods to integrate DropBlocks into your app. If you aren't familiar with it, CocoaPods is an awesomely simple dependency manager for Objective-C projects. You can get more info about it here.
If you're using CocoaPods, all you have to do is put this line in your Podfile:
pod 'DropBlocks', '0.0.3'
And you're done. That will also cause the standard Dropbox SDK to be pulled into your project automatically.
If you aren't using CocoaPods (Why not? What's your problem??) then you'll have to just grab the DropBlocks source and drop it into your project. You'll need DropBlocks.m and DropBlocks.h. You'll also have to manually integrate the standard Dropbox SDK into your project. Consult the Dropbox SDK documentation for more information about that.
You'll need to do all the normal setup for Dropbox in your code (linking account, creating session, etc). You can find information on that in Dropbox SDK documentation.
DropBlocks is meant to be a replacement for all the calls you would normally make to the DBRestClient class.
DropBlocks version 0.0.3 is still a beta release, though it is starting to see use in more productions apps. Some of the methods have not been thoroughly tested. Use at your own risk, and please file a bug if you encounter any problems.
John Blanco (ZaBlanc) - Fixed file uploading and improved the callback typedefs for better auto-completion. (#1).
Ryan Tsao (rtsao)
If you end up using DropBlocks in a project, I'd love to hear about it.
email: nate@digitalrickshaw.com
twitter: @nate_petersen