7

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

我遵循了 DropBoxSDK 的设置,一切正常。我可以登录我的帐户并将其链接起来。所以我正确设置了一切。

现在我想用它来简单地从 dropBox 加载文件并再次保存。考虑到您只想同步一个名为“example.txt”的文件(为简单起见),该文件位于我的 DropBox 的“示例”文件夹中。相同的“example.txt”保存在 iPhone 上我的应用程序的 Documents 目录中。

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);
   }

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

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

在网站上的 DropBox 文档中,我真的找不到这些非常基本的步骤的答案。他们提供的示例让我觉得太混乱了……尤其是因为它只是关于加载文件而不是在我所见的范围内保存它们。

对于如何解决此问题的任何帮助或建议,我将不胜感激。

4

2 回答 2

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];
}

事实证明,无需创建文件夹,如果它不存在,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];
    }
}

如果您遇到类似的问题,希望这会有所帮助。

于 2011-04-16T19:43:46.620 回答
2

进入 DBdownload 函数,您可以通过实现 DBResClientDelegate 方法loadedFile 和 loadFileFailedWithError 来跳过检查

于 2011-04-17T11:36:27.687 回答