如何使用xcode从/向Dropbox上传/下载文件

时间:2021-03-27 16:55:47

I am new to iOS. How could I upload/download a file from/to dropbox? I integrated dropbox applications in my app, but I couldn't upload/download a file.

我是iOS新手。我如何从/向Dropbox上传/下载文件?我在我的应用程序中集成了Dropbox应用程序,但无法上传/下载文件。

This is my upload code:

这是我的上传代码:

- (NSString *)getDocumentPath
{
    NSMutableData * pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData, self.view.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:pdfContext];
    UIGraphicsEndPDFContext();

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"vani.doc"];

    [pdfData writeToFile:path  atomically:YES];

    return path;  

}

- (IBAction)upload:(id)sender {

    NSString *path = [self getDocumentPath];

    NSString * local = [path lastPathComponent];

    NSString *destDir = @"/Plist Folder/vani.doc";

    [restClient uploadFile:local toPath:destDir withParentRev:nil fromPath:path];

This is for downloading:

这是下载:

    restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    restClient.delegate = self;
    NSString *fileName = [NSString stringWithFormat:@"/vani.doc"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString* path2 = [documentsDirectory stringByAppendingString:
                       [NSString stringWithFormat:@"%@", fileName]];
    //NSLog(@"%@", path2);

    [restClient loadFile:fileName intoPath:path2];

Please help me. I am very confused.

请帮帮我。我很困扰。

2 个解决方案

#1


5  

Let me help you in this case, I have created Wrapper class for Dropbox find code below used in one of my project. It does not support ARC. Create DropBoxManager header and implementation file This may be too much for you if you are beginner but try to read whole answer and follow step by step. Let me know in case of any problem, I will help.

在这种情况下,让我帮助你,我已经创建了Dropbox的Wrapper类,在我的一个项目中使用了以下代码。它不支持ARC。创建DropBoxManager标头和实现文件如果您是初学者,这可能对您来说太过分了,但是请尝试阅读整个答案并按照步骤进行操作。如有任何问题,请告诉我,我会帮忙。

Code for DropBoxManager.h

DropBoxManager.h的代码

#import <Foundation/Foundation.h>
#import <DropboxSDK/DropboxSDK.h>

#define kDropbox_AppKey @"" // Provide your key here
#define kDropbox_AppSecret @"" // Provide your secret key here
#define kDropbox_RootFolder kDBRootDropbox //Decide level access like root or app

@protocol DropBoxDelegate;

typedef enum 
{
    DropBoxTypeStatusNone = 0,
    DropBoxGetAccountInfo = 1,
    DropBoxGetFolderList = 2,
    DropBoxCreateFolder = 3,
    DropBoxUploadFile = 4
} DropBoxPostType;

@interface DropboxManager : NSObject <DBRestClientDelegate,DBSessionDelegate,UIAlertViewDelegate>
{
    UIViewController<DropBoxDelegate> *apiCallDelegate;

    DBSession *objDBSession;
    NSString *relinkUserId; 
    DBRestClient *objRestClient;

    DropBoxPostType currentPostType;

    NSString *strFileName;
    NSString *strFilePath;
    NSString *strDestDirectory;
    NSString *strFolderCreate;
    NSString *strFolderToList;
}

@property (nonatomic,retain) DBSession *objDBSession;
@property (nonatomic,retain) NSString *relinkUserId;

@property (nonatomic,assign) UIViewController<DropBoxDelegate> *apiCallDelegate;

@property (nonatomic,retain) DBRestClient *objRestClient;

@property (nonatomic,assign) DropBoxPostType currentPostType;

@property (nonatomic,retain) NSString *strFileName;
@property (nonatomic,retain) NSString *strFilePath;
@property (nonatomic,retain) NSString *strDestDirectory;

@property (nonatomic,retain) NSString *strFolderCreate;

@property (nonatomic,retain) NSString *strFolderToList;

//Singleton
+(id)dropBoxManager;

//Initialize dropbox
-(void)initDropbox;

//Authentication Verification
-(BOOL)handledURL:(NSURL*)url;
-(void)dropboxDidLogin;
-(void)dropboxDidNotLogin;

//Upload file
-(void)uploadFile;

//Download File
-(void)downlaodFileFromSourcePath:(NSString*)pstrSourcePath destinationPath:(NSString*)toPath;

//Create Folder
-(void)createFolder;

//Get Account Information
-(void)loginToDropbox;
-(void)logoutFromDropbox;
-(BOOL)isLoggedIn;

//List Folders
-(void)listFolders;

@end

@protocol DropBoxDelegate <NSObject>

@optional

- (void)finishedLogin:(NSMutableDictionary*)userInfo;
- (void)failedToLogin:(NSString*)withMessage;

- (void)finishedCreateFolder;
- (void)failedToCreateFolder:(NSString*)withMessage;

- (void)finishedUploadFile;
- (void)failedToUploadFile:(NSString*)withMessage;

- (void)finishedDownloadFile;
- (void)failedToDownloadFile:(NSString*)withMessage;

- (void)getFolderContentFinished:(DBMetadata*)metadata;
- (void)getFolderContentFailed:(NSString*)withMessage;

@end

Code for DropBoxManager.m

DropBoxManager.m的代码

#import "DropboxManager.h"

@implementation DropboxManager

@synthesize objDBSession,relinkUserId,apiCallDelegate;
@synthesize objRestClient;
@synthesize currentPostType;

@synthesize strFileName;
@synthesize strFilePath;
@synthesize strDestDirectory;

@synthesize strFolderCreate;

@synthesize strFolderToList;

static DropboxManager *singletonManager = nil;

+(id)dropBoxManager
{
    if(!singletonManager)
        singletonManager = [[DropboxManager alloc] init];

    return singletonManager;
}

-(void)initDropbox
{
    DBSession* session =  [[DBSession alloc] initWithAppKey:kDropbox_AppKey appSecret:kDropbox_AppSecret root:kDropbox_RootFolder];
    session.delegate = self; 
    [DBSession setSharedSession:session];
    [session release];

    if([[DBSession sharedSession] isLinked] && objRestClient == nil)
    {       
        self.objRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
        self.objRestClient.delegate = self;
    }   
}

-(void)checkForLink
{
    if(![[DBSession sharedSession] isLinked])
        [[DBSession sharedSession] linkFromController:apiCallDelegate];
}

-(BOOL)handledURL:(NSURL*)url
{
    BOOL isLinked=NO;
    if ([[DBSession sharedSession] handleOpenURL:url]) 
    {

        if([[DBSession sharedSession] isLinked])
        {
            isLinked=YES;
            [self dropboxDidLogin];
        }
        else
        {
            isLinked = NO;
            [self dropboxDidNotLogin];
        }
    }
    return isLinked;
}

#pragma mark -
#pragma mark Handle login

-(void)dropboxDidLogin
{
    NSLog(@"Logged in");

    if([[DBSession sharedSession] isLinked] && self.objRestClient == nil)
    {       
        self.objRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
        self.objRestClient.delegate = self;
    }   

    switch(currentPostType)
    {
        case DropBoxTypeStatusNone:

            break;

        case DropBoxGetAccountInfo:
            [self loginToDropbox];
            break;

        case DropBoxGetFolderList:
            [self listFolders];
            break;

        case DropBoxCreateFolder:
            [self createFolder];
            break;

        case DropBoxUploadFile:
            [self uploadFile];
            break;          
    }

    //[(MainViewController*)apiCallDelegate setLoginStatus];
}

-(void)dropboxDidNotLogin
{
    NSLog(@"Not Logged in");
    switch(currentPostType)
    {
        case DropBoxTypeStatusNone:

            break;

        case DropBoxUploadFile:
            if([self.apiCallDelegate respondsToSelector:@selector(failedToUploadFile:)])
                [self.apiCallDelegate failedToUploadFile:@"Problem connecting dropbox. Please try again later."];
            break;

        case DropBoxGetFolderList:

            break;

        case DropBoxCreateFolder:

            break;

        case DropBoxGetAccountInfo:

            break;
    }   
}

#pragma mark -
#pragma mark DBSessionDelegate methods

- (void)sessionDidReceiveAuthorizationFailure:(DBSession*)session userId:(NSString *)userId 
{
    relinkUserId = [userId retain];
    [[[[UIAlertView alloc] initWithTitle:@"Dropbox Session Ended" message:@"Do you want to relink?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Relink", nil] autorelease] show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)index 
{
    if (index != alertView.cancelButtonIndex)
        [[DBSession sharedSession] linkUserId:relinkUserId fromController:apiCallDelegate];

    [relinkUserId release];
    relinkUserId = nil;
}

#pragma mark -
#pragma mark Fileupload

-(void)uploadFile
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient uploadFile:strFileName toPath:strDestDirectory withParentRev:nil fromPath:strFilePath];
    else
        [self checkForLink];
}

-(void)downlaodFileFromSourcePath:(NSString*)pstrSourcePath destinationPath:(NSString*)toPath
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadFile:pstrSourcePath intoPath:toPath];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath metadata:(DBMetadata*)metadata 
{   
    if([self.apiCallDelegate respondsToSelector:@selector(finishedUploadeFile)])
        [self.apiCallDelegate finishedUploadFile];

    NSLog(@"File uploaded successfully to path: %@", metadata.path);
}

- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedDownloadFile)])
        [self.apiCallDelegate finishedDownloadFile];
}

-(void)restClient:(DBRestClient *)client loadFileFailedWithError:(NSError *)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToDownloadFile:)])
        [self.apiCallDelegate failedToDownloadFile:[error description]];
}

- (void)restClient:(DBRestClient*)client uploadFileFailedWithError:(NSError*)error 
{   
    if([self.apiCallDelegate respondsToSelector:@selector(failedToUploadFile:)])
        [self.apiCallDelegate failedToUploadFile:[error description]];

    NSLog(@"File upload failed with error - %@", error);
}

#pragma mark -
#pragma mark Create Folder

-(void)createFolder
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient createFolder:strFolderCreate];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client createdFolder:(DBMetadata*)folder
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedCreateFolder)])
        [self.apiCallDelegate finishedCreateFolder];

    NSLog(@"Folder created successfully to path: %@", folder.path);
}

- (void)restClient:(DBRestClient*)client createFolderFailedWithError:(NSError*)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToCreateFolder:)])
        [self.apiCallDelegate failedToCreateFolder:[error description]];

    NSLog(@"Folder create failed with error - %@", error);
}

#pragma mark -
#pragma mark Load account information

-(void)loginToDropbox
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadAccountInfo];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client loadedAccountInfo:(DBAccountInfo*)info
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedLogin:)])
    {
        NSMutableDictionary *userInfo = [[[NSMutableDictionary alloc] init] autorelease];
        [userInfo setObject:info.displayName forKey:@"UserName"];
        [userInfo setObject:info.userId forKey:@"UserID"];
        [userInfo setObject:info.referralLink forKey:@"RefferelLink"];
        [self.apiCallDelegate finishedLogin:userInfo];
    }

    NSLog(@"Got Information: %@", info.displayName);
}

- (void)restClient:(DBRestClient*)client loadAccountInfoFailedWithError:(NSError*)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToLogin:)])
        [self.apiCallDelegate failedToLogin:[error description]];

    NSLog(@"Failed to get account information with error - %@", error);
}

#pragma mark -
#pragma mark Logout

-(void)logoutFromDropbox
{
    [[DBSession sharedSession] unlinkAll];
    [self.objRestClient release];
}

#pragma mark -
#pragma mark Check for login

-(BOOL)isLoggedIn
{
    return [[DBSession sharedSession] isLinked] ? YES : NO;
}

#pragma mark -
#pragma mark Load Folder list 

-(void)listFolders
{
    NSLog(@"Here-->%@",self.strFolderToList);
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadMetadata:self.strFolderToList];
    else
        [self checkForLink];    
}

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
{
    if (metadata.isDirectory)
    {
        NSLog(@"Folder '%@' contains:", metadata.contents);
        for (DBMetadata *file in metadata.contents)
        {
            NSLog(@"\t%@", file);
        }

        if([apiCallDelegate respondsToSelector:@selector(getFolderContentFinished:)])
            [apiCallDelegate getFolderContentFinished:metadata];
    }
    NSLog(@"Folder list success: %@", metadata.path);

}

- (void)restClient:(DBRestClient*)client metadataUnchangedAtPath:(NSString*)path
{

}

- (void)restClient:(DBRestClient*)client loadMetadataFailedWithError:(NSError*)error
{
    NSLog(@"Load meta data failed with error - %@", error);

    if([apiCallDelegate respondsToSelector:@selector(getFolderContentFailed:)])
        [apiCallDelegate getFolderContentFailed:[error localizedDescription]];
}

E.g. usage header file

例如。用法头文件

//Your view controller Header file.
#import <UIKit/UIKit.h>
#import "DropboxManager.h"

@interface YourViewController : UIViewController <DropBoxDelegate>
{
    DropboxManager *objManager;
}

@property (nonatomic,assign) DropboxManager *objManager;


-(IBAction)btnUploadFileTapped:(id)sender;

@end

E.g. usage implementation file

例如。用法实施文件

#import "YourViewController.h"

@implementation YourViewController
@synthesize objManager;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    objManager = [DropboxManager dropBoxManager];
    objManager.apiCallDelegate =self;
    [objManager initDropbox];
}

-(IBAction)btnUploadFileTapped:(id)sender
{
    objManager.currentPostType = DropBoxUploadFile;
    objManager.strFileName  = @"YourFileName";
    objManager.strFilePath = @"YourFilePath";
    objManager.strDestDirectory = @"/";
    [objManager uploadFile];
}

#pragma mark -
#pragma mark File upload delegate

- (void)finishedUploadFile
{
    NSLog(@"Uploaded successfully.");
}

- (void)failedToUploadFile:(NSString*)withMessage
{
    NSLog(@"Failed to upload error is %@",withMessage);
}

@end

#2


0  

Just add

只需添加

import UIKit/UIKit.h

wherever you are getting error other than ARC.

除了ARC之外你在哪里得到错误。

#1


5  

Let me help you in this case, I have created Wrapper class for Dropbox find code below used in one of my project. It does not support ARC. Create DropBoxManager header and implementation file This may be too much for you if you are beginner but try to read whole answer and follow step by step. Let me know in case of any problem, I will help.

在这种情况下,让我帮助你,我已经创建了Dropbox的Wrapper类,在我的一个项目中使用了以下代码。它不支持ARC。创建DropBoxManager标头和实现文件如果您是初学者,这可能对您来说太过分了,但是请尝试阅读整个答案并按照步骤进行操作。如有任何问题,请告诉我,我会帮忙。

Code for DropBoxManager.h

DropBoxManager.h的代码

#import <Foundation/Foundation.h>
#import <DropboxSDK/DropboxSDK.h>

#define kDropbox_AppKey @"" // Provide your key here
#define kDropbox_AppSecret @"" // Provide your secret key here
#define kDropbox_RootFolder kDBRootDropbox //Decide level access like root or app

@protocol DropBoxDelegate;

typedef enum 
{
    DropBoxTypeStatusNone = 0,
    DropBoxGetAccountInfo = 1,
    DropBoxGetFolderList = 2,
    DropBoxCreateFolder = 3,
    DropBoxUploadFile = 4
} DropBoxPostType;

@interface DropboxManager : NSObject <DBRestClientDelegate,DBSessionDelegate,UIAlertViewDelegate>
{
    UIViewController<DropBoxDelegate> *apiCallDelegate;

    DBSession *objDBSession;
    NSString *relinkUserId; 
    DBRestClient *objRestClient;

    DropBoxPostType currentPostType;

    NSString *strFileName;
    NSString *strFilePath;
    NSString *strDestDirectory;
    NSString *strFolderCreate;
    NSString *strFolderToList;
}

@property (nonatomic,retain) DBSession *objDBSession;
@property (nonatomic,retain) NSString *relinkUserId;

@property (nonatomic,assign) UIViewController<DropBoxDelegate> *apiCallDelegate;

@property (nonatomic,retain) DBRestClient *objRestClient;

@property (nonatomic,assign) DropBoxPostType currentPostType;

@property (nonatomic,retain) NSString *strFileName;
@property (nonatomic,retain) NSString *strFilePath;
@property (nonatomic,retain) NSString *strDestDirectory;

@property (nonatomic,retain) NSString *strFolderCreate;

@property (nonatomic,retain) NSString *strFolderToList;

//Singleton
+(id)dropBoxManager;

//Initialize dropbox
-(void)initDropbox;

//Authentication Verification
-(BOOL)handledURL:(NSURL*)url;
-(void)dropboxDidLogin;
-(void)dropboxDidNotLogin;

//Upload file
-(void)uploadFile;

//Download File
-(void)downlaodFileFromSourcePath:(NSString*)pstrSourcePath destinationPath:(NSString*)toPath;

//Create Folder
-(void)createFolder;

//Get Account Information
-(void)loginToDropbox;
-(void)logoutFromDropbox;
-(BOOL)isLoggedIn;

//List Folders
-(void)listFolders;

@end

@protocol DropBoxDelegate <NSObject>

@optional

- (void)finishedLogin:(NSMutableDictionary*)userInfo;
- (void)failedToLogin:(NSString*)withMessage;

- (void)finishedCreateFolder;
- (void)failedToCreateFolder:(NSString*)withMessage;

- (void)finishedUploadFile;
- (void)failedToUploadFile:(NSString*)withMessage;

- (void)finishedDownloadFile;
- (void)failedToDownloadFile:(NSString*)withMessage;

- (void)getFolderContentFinished:(DBMetadata*)metadata;
- (void)getFolderContentFailed:(NSString*)withMessage;

@end

Code for DropBoxManager.m

DropBoxManager.m的代码

#import "DropboxManager.h"

@implementation DropboxManager

@synthesize objDBSession,relinkUserId,apiCallDelegate;
@synthesize objRestClient;
@synthesize currentPostType;

@synthesize strFileName;
@synthesize strFilePath;
@synthesize strDestDirectory;

@synthesize strFolderCreate;

@synthesize strFolderToList;

static DropboxManager *singletonManager = nil;

+(id)dropBoxManager
{
    if(!singletonManager)
        singletonManager = [[DropboxManager alloc] init];

    return singletonManager;
}

-(void)initDropbox
{
    DBSession* session =  [[DBSession alloc] initWithAppKey:kDropbox_AppKey appSecret:kDropbox_AppSecret root:kDropbox_RootFolder];
    session.delegate = self; 
    [DBSession setSharedSession:session];
    [session release];

    if([[DBSession sharedSession] isLinked] && objRestClient == nil)
    {       
        self.objRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
        self.objRestClient.delegate = self;
    }   
}

-(void)checkForLink
{
    if(![[DBSession sharedSession] isLinked])
        [[DBSession sharedSession] linkFromController:apiCallDelegate];
}

-(BOOL)handledURL:(NSURL*)url
{
    BOOL isLinked=NO;
    if ([[DBSession sharedSession] handleOpenURL:url]) 
    {

        if([[DBSession sharedSession] isLinked])
        {
            isLinked=YES;
            [self dropboxDidLogin];
        }
        else
        {
            isLinked = NO;
            [self dropboxDidNotLogin];
        }
    }
    return isLinked;
}

#pragma mark -
#pragma mark Handle login

-(void)dropboxDidLogin
{
    NSLog(@"Logged in");

    if([[DBSession sharedSession] isLinked] && self.objRestClient == nil)
    {       
        self.objRestClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
        self.objRestClient.delegate = self;
    }   

    switch(currentPostType)
    {
        case DropBoxTypeStatusNone:

            break;

        case DropBoxGetAccountInfo:
            [self loginToDropbox];
            break;

        case DropBoxGetFolderList:
            [self listFolders];
            break;

        case DropBoxCreateFolder:
            [self createFolder];
            break;

        case DropBoxUploadFile:
            [self uploadFile];
            break;          
    }

    //[(MainViewController*)apiCallDelegate setLoginStatus];
}

-(void)dropboxDidNotLogin
{
    NSLog(@"Not Logged in");
    switch(currentPostType)
    {
        case DropBoxTypeStatusNone:

            break;

        case DropBoxUploadFile:
            if([self.apiCallDelegate respondsToSelector:@selector(failedToUploadFile:)])
                [self.apiCallDelegate failedToUploadFile:@"Problem connecting dropbox. Please try again later."];
            break;

        case DropBoxGetFolderList:

            break;

        case DropBoxCreateFolder:

            break;

        case DropBoxGetAccountInfo:

            break;
    }   
}

#pragma mark -
#pragma mark DBSessionDelegate methods

- (void)sessionDidReceiveAuthorizationFailure:(DBSession*)session userId:(NSString *)userId 
{
    relinkUserId = [userId retain];
    [[[[UIAlertView alloc] initWithTitle:@"Dropbox Session Ended" message:@"Do you want to relink?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Relink", nil] autorelease] show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)index 
{
    if (index != alertView.cancelButtonIndex)
        [[DBSession sharedSession] linkUserId:relinkUserId fromController:apiCallDelegate];

    [relinkUserId release];
    relinkUserId = nil;
}

#pragma mark -
#pragma mark Fileupload

-(void)uploadFile
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient uploadFile:strFileName toPath:strDestDirectory withParentRev:nil fromPath:strFilePath];
    else
        [self checkForLink];
}

-(void)downlaodFileFromSourcePath:(NSString*)pstrSourcePath destinationPath:(NSString*)toPath
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadFile:pstrSourcePath intoPath:toPath];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath metadata:(DBMetadata*)metadata 
{   
    if([self.apiCallDelegate respondsToSelector:@selector(finishedUploadeFile)])
        [self.apiCallDelegate finishedUploadFile];

    NSLog(@"File uploaded successfully to path: %@", metadata.path);
}

- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedDownloadFile)])
        [self.apiCallDelegate finishedDownloadFile];
}

-(void)restClient:(DBRestClient *)client loadFileFailedWithError:(NSError *)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToDownloadFile:)])
        [self.apiCallDelegate failedToDownloadFile:[error description]];
}

- (void)restClient:(DBRestClient*)client uploadFileFailedWithError:(NSError*)error 
{   
    if([self.apiCallDelegate respondsToSelector:@selector(failedToUploadFile:)])
        [self.apiCallDelegate failedToUploadFile:[error description]];

    NSLog(@"File upload failed with error - %@", error);
}

#pragma mark -
#pragma mark Create Folder

-(void)createFolder
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient createFolder:strFolderCreate];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client createdFolder:(DBMetadata*)folder
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedCreateFolder)])
        [self.apiCallDelegate finishedCreateFolder];

    NSLog(@"Folder created successfully to path: %@", folder.path);
}

- (void)restClient:(DBRestClient*)client createFolderFailedWithError:(NSError*)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToCreateFolder:)])
        [self.apiCallDelegate failedToCreateFolder:[error description]];

    NSLog(@"Folder create failed with error - %@", error);
}

#pragma mark -
#pragma mark Load account information

-(void)loginToDropbox
{
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadAccountInfo];
    else
        [self checkForLink];
}

- (void)restClient:(DBRestClient*)client loadedAccountInfo:(DBAccountInfo*)info
{
    if([self.apiCallDelegate respondsToSelector:@selector(finishedLogin:)])
    {
        NSMutableDictionary *userInfo = [[[NSMutableDictionary alloc] init] autorelease];
        [userInfo setObject:info.displayName forKey:@"UserName"];
        [userInfo setObject:info.userId forKey:@"UserID"];
        [userInfo setObject:info.referralLink forKey:@"RefferelLink"];
        [self.apiCallDelegate finishedLogin:userInfo];
    }

    NSLog(@"Got Information: %@", info.displayName);
}

- (void)restClient:(DBRestClient*)client loadAccountInfoFailedWithError:(NSError*)error
{
    if([self.apiCallDelegate respondsToSelector:@selector(failedToLogin:)])
        [self.apiCallDelegate failedToLogin:[error description]];

    NSLog(@"Failed to get account information with error - %@", error);
}

#pragma mark -
#pragma mark Logout

-(void)logoutFromDropbox
{
    [[DBSession sharedSession] unlinkAll];
    [self.objRestClient release];
}

#pragma mark -
#pragma mark Check for login

-(BOOL)isLoggedIn
{
    return [[DBSession sharedSession] isLinked] ? YES : NO;
}

#pragma mark -
#pragma mark Load Folder list 

-(void)listFolders
{
    NSLog(@"Here-->%@",self.strFolderToList);
    if([[DBSession sharedSession] isLinked])
        [self.objRestClient loadMetadata:self.strFolderToList];
    else
        [self checkForLink];    
}

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
{
    if (metadata.isDirectory)
    {
        NSLog(@"Folder '%@' contains:", metadata.contents);
        for (DBMetadata *file in metadata.contents)
        {
            NSLog(@"\t%@", file);
        }

        if([apiCallDelegate respondsToSelector:@selector(getFolderContentFinished:)])
            [apiCallDelegate getFolderContentFinished:metadata];
    }
    NSLog(@"Folder list success: %@", metadata.path);

}

- (void)restClient:(DBRestClient*)client metadataUnchangedAtPath:(NSString*)path
{

}

- (void)restClient:(DBRestClient*)client loadMetadataFailedWithError:(NSError*)error
{
    NSLog(@"Load meta data failed with error - %@", error);

    if([apiCallDelegate respondsToSelector:@selector(getFolderContentFailed:)])
        [apiCallDelegate getFolderContentFailed:[error localizedDescription]];
}

E.g. usage header file

例如。用法头文件

//Your view controller Header file.
#import <UIKit/UIKit.h>
#import "DropboxManager.h"

@interface YourViewController : UIViewController <DropBoxDelegate>
{
    DropboxManager *objManager;
}

@property (nonatomic,assign) DropboxManager *objManager;


-(IBAction)btnUploadFileTapped:(id)sender;

@end

E.g. usage implementation file

例如。用法实施文件

#import "YourViewController.h"

@implementation YourViewController
@synthesize objManager;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    objManager = [DropboxManager dropBoxManager];
    objManager.apiCallDelegate =self;
    [objManager initDropbox];
}

-(IBAction)btnUploadFileTapped:(id)sender
{
    objManager.currentPostType = DropBoxUploadFile;
    objManager.strFileName  = @"YourFileName";
    objManager.strFilePath = @"YourFilePath";
    objManager.strDestDirectory = @"/";
    [objManager uploadFile];
}

#pragma mark -
#pragma mark File upload delegate

- (void)finishedUploadFile
{
    NSLog(@"Uploaded successfully.");
}

- (void)failedToUploadFile:(NSString*)withMessage
{
    NSLog(@"Failed to upload error is %@",withMessage);
}

@end

#2


0  

Just add

只需添加

import UIKit/UIKit.h

wherever you are getting error other than ARC.

除了ARC之外你在哪里得到错误。