2011-04-16 219 views
7

关于DropBox集成到iPhone应用程序中的一个非常基本的问题。iPhone DropBox API:如何加载文件?

我跟着DropBoxSDK的设置,一切工作正常。我可以登录到我的帐户并将其关联。所以我正确地设置了一切。

现在我想用它来简单地从dropBox加载文件并再次保存。考虑到你只想同步一个文件(为了简单起见),名为'example.txt',它位于我的DropBox的'Example'文件夹中。同样的'example.txt'保存在我的应用程序的Documents目录中的iPhone本地。

Dropbox的自述文件表明隐约下面的代码,我觉得非常神秘的,并不能真正看到如何加载或保存文件:

2. Make an request on the rest client: 

    [[self restClient] loadMetadata:@"/"]; 

3. Implement the DBRestClientDelegate methods needed to get the results of the 
    particular call you made: 

    - (void)restClient:(DBRestClient*)client 
     loadedMetadata:(DBMetadata*)metadata { 

     NSLog(@"Loaded metadata!"); 
    } 

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

     NSLog(@"Metadata unchanged!"); 
    } 

    - (void)restClient:(DBRestClient*)client 
     loadMetadataFailedWithError:(NSError*)error { 

     NSLog(@"Error loading metadata: %@", error); 
    } 

所以我(希望)简单的问题我怎么能:

  • 检查是否有在我的Dropbox
  • 如果没有一个例子文件夹,创建一个从应用程序文件example.txt文件保存到这个文件夹,例如
  • 负载example.txt中
  • 一旦程序退出:example.txt文件保存到DropBox的

我真的不能找到一个答案,在网站上的DropBox文档,这些很基本的步骤。他们提供的例子让我感到非常困惑......特别是因为它只是关于加载文件,而不是像我看到的那样保存它们。

我会很感激任何帮助或建议如何去做到这一点。

回答

15

好吧,我发现这个方法救我将example.txt文件:

-(void) DBupload:(id)sender 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory 
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Example.txt"]; 

    [self.restClient uploadFile:@"NoteBook.txt" toPath:@"/example" fromPath:filePath]; 
} 

事实证明,没有必要创建一个文件夹,保管箱会自动为你做,如果它不存在。

这是下载同一个文件的形式投寄箱:

-(void) DBdownload:(id)sender 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory 
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Example.txt"]; 
    NSError *error; 

    [self.restClient loadFile:@"/example/Example.txt" intoPath:filePath]; 

    if (filePath) { // check if file exists - if so load it: 
     NSString *tempTextOut = [NSString stringWithContentsOfFile:filePath 
                  encoding:NSUTF8StringEncoding 
                  error:&error]; 
    } 
} 

希望这有助于如果你有类似的问题挣扎。

2

进入DBdownload函数,您可以通过执行DBRestClientDelegate方法loadedFile和loadFileFailedWithError来跳过检查