Dropbox iOS Sync API添加未正确调用的观察者

时间:2014-02-21 03:56:30

标签: ios dropbox dropbox-api

如果文件被删除或添加到'path'文件夹中,则不会调用以下观察者:

- (BOOL)addObserver:(id)observer forPath:(DBPath *)path block:(DBObserver)block;

这个方法有什么意义,何时被称为?

如果在'path'

的文件夹中删除/添加/修改了任何文件,则会调用以下内容
- (BOOL)addObserver:(id)observer forPathAndChildren:(DBPath *)path block:(DBObserver)block;

我希望能够区分文件夹中包含的文件何时被修改,以及在'path'文件夹中添加/删除文件的时间。

以下是我用来注册观察员的代码:

#define DATA_FOLDER_NAME @"Portfolio_Data"
DBFilesystem* filesystem = [DBFilesystem sharedFilesystem];
DBPath *portfolioFilesPath = [[DBPath root] childPath:DATA_FOLDER_NAME];

    [filesystem addObserver:self forPath:portfolioFilesPath block:^{

        dispatch_async(dispatch_get_main_queue(), ^{
            [self getPortfoliosData];
        });
    }];

1 个答案:

答案 0 :(得分:0)

一些事情。

  1. addObserver:forPath:block:用于跟踪路径中文件的更改。
  2. addObserver:forPathAndChildren:block:用于跟踪路径中文件夹的更改以及路径中文件内的所有直接子项(但不包括这些子项的子项)。
  3. 做你想做的事需要多做一些工作。要侦听对单个文件的更改,您需要为每个文件创建DBFile并向该文件添加观察者。更改或删除文件时将调用此观察者。然后,您需要使用addObserver:forPathAndChildren:block:(或addObserver:forPathAndDescendants:block:)来监听文件夹中的常规更改。最大的问题是当您的块被调用时,您只知道“某些东西”已经改变。您需要扫描文件夹以查找新文件。您可以忽略现有或已删除的文件,因为在更改或删除文件时将调用您为每个文件设置的观察者。
  4. 与基于iCloud API的Dropbox Sync API相比,这是一个主要缺点。 iCloud告诉你文件夹中添加了什么文件,Dropbox没有。

相关问题