1

如果保管箱文件夹中的任何文件发生更改,我希望通知用户。为此,我必须使用以下代码:

[self.restCLient loadDelta: nil];

和方法:

-(void)restClient:(DBRestClient *)client loadedDeltaEntries:(NSArray *)entries reset:(BOOL)shouldReset cursor:(NSString *)cursor hasMore:(BOOL)hasMore{
NSLog(@"WORKED: %@, %@, %c, %c", entries, cursor, hasMore, shouldReset);
 }

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

NSLog(@"THE ERROR: %@", error);
}

这是我得到的响应类型:

2013-03-06 20:46:33.373 Splash-it[1659:907] WORKED: (
"<DBDeltaEntry: 0x1e2afbf0>",
"<DBDeltaEntry: 0x1e0e4030>",
"<DBDeltaEntry: 0x1e013640>",
"<DBDeltaEntry: 0x1e28e590>"
)

如果我的保管箱发生了变化,我该如何理解这一点?

4

1 回答 1

2

这个问题有点老了,但我想我还是会回答。:)

您将要访问DBDeltaEntry对象的属性。

第 1 步:导入 DBDeltaEntry.h

我不知道为什么这不包含在 Dropbox 的其他东西中(我给 Dropbox 发了电子邮件询问原因)。将此添加到您的课程中:

#import "DBDeltaEntry.h"

第 2 步:循环遍历结果

loadedDeltaEntries委托方法中,您可以像这样循环遍历结果:

for(DBDeltaEntry *file in entries) {
  NSLog(@"Entry name: %@ / Metadata: %@",file.lowercasePath, file.metadata.filename);
}

要查看您可以访问 DBDeltaEntry 对象的元数据的其他内容,请查看 DBMetadata.h:

BOOL thumbnailExists;
long long totalBytes;
NSDate* lastModifiedDate;
NSDate *clientMtime; // file's mtime for display purposes only
NSString* path;
BOOL isDirectory;
NSArray* contents;
NSString* hash;
NSString* humanReadableSize;
NSString* root;
NSString* icon;
NSString* rev;
long long revision; // Deprecated; will be removed in version 2. Use rev whenever possible
BOOL isDeleted;

NSString *filename;

第 3 步:了解结果

此条目列表表示您的 Dropbox 文件夹的最新更改(修改、删除或添加了哪些文件)。在该方法中使用cursor很重要,loadedDeltaEntries因为它可以帮助您跟踪您知道哪些更改。您可以存储光标,然后在每次 delta 调用中将其传递给 Dropbox,“据我所知,这是关于更改的”,而 Dropbox 只会告诉您自该光标以来发生了什么变化。

我希望这会有所帮助。

于 2013-08-05T21:38:07.267 回答