如果文件被删除或添加到'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];
});
}];
答案 0 :(得分:0)
一些事情。
addObserver:forPath:block:
用于跟踪路径中文件的更改。addObserver:forPathAndChildren:block:
用于跟踪路径中文件夹的更改以及路径中文件内的所有直接子项(但不包括这些子项的子项)。DBFile
并向该文件添加观察者。更改或删除文件时将调用此观察者。然后,您需要使用addObserver:forPathAndChildren:block:
(或addObserver:forPathAndDescendants:block:
)来监听文件夹中的常规更改。最大的问题是当您的块被调用时,您只知道“某些东西”已经改变。您需要扫描文件夹以查找新文件。您可以忽略现有或已删除的文件,因为在更改或删除文件时将调用您为每个文件设置的观察者。与基于iCloud API的Dropbox Sync API相比,这是一个主要缺点。 iCloud告诉你文件夹中添加了什么文件,Dropbox没有。