iPhone DropBox API:如何加载文件?

n.e*_*ind 7 iphone cocoa-touch objective-c dropbox dropbox-api

关于dropBox集成到iPhone应用程序的一个非常基本的问题.

我按照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);
   }
Run Code Online (Sandbox Code Playgroud)

所以我(希望)简单的问题是我如何能够:

  • 检查我的保管箱中是否有示例文件夹
  • 如果没有,请创建一个并将example.txt从app文档保存到此示例文件夹中
  • 加载example.txt
  • 程序退出后:将example.txt保存到DropBox

我无法在网站上的DropBox文档中找到这些相当基本步骤的答案.他们提供的示例我发现太令人困惑了...特别是因为它只是关于加载文件而不是我可以看到的保存它们.

如果对此有任何帮助或建议,我将不胜感激.

n.e*_*ind 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];
}
Run Code Online (Sandbox Code Playgroud)

事实证明,无需创建文件夹,如果不存在,Dropbox将自动为您执行此操作.

这是为了下载相同的文件形式Dropbox:

-(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];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你正在努力解决类似的问题,希望这会有所帮助.