我正在使用dropbox从dropbox帐户上传和下载共享文件。这意味着每个用户都可以下载文件的最新版本,对其进行修改,然后重新上传,替换以前的版本。如果有稳定的internet连接,则此过程有效,但如果internet没有响应,则文件将被损坏,并且将上载未完成的文件版本。这将损害所有用户。有没有办法检查dropbox服务器是否有稳定的互联网连接?我尝试了可达性,但它只控制互联网连接,而不是dropbox服务器的响应。
错误代码:
- (void)restClient:(DBRestClient*)client uploadFileFailedWithError:(NSError*)error {
NSLog(@"File upload failed with error - %@", error);
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"Offline mode" message:@"Your event is going to be posted when you create a new event." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil];
[alert1 show];
}关键是,即使调用了这个函数,文件仍然会被上传到互联网上!
谢谢你的帮助。
发布于 2012-12-08 16:42:05
要检查您的帐户是否与dropbox链接,请使用返回BOOL值的.[[DBSession sharedSession] isLinked]
if ([[DBSession sharedSession] isLinked]) {
// write your code here..
}然后将您的文件恢复到以前的版本。
为此,您只需清楚地理解它们
为文件的以前版本获取 。只有30天前的修订版本才可用。
/* Loads a list of up to 10 DBMetadata objects representing past revisions of the file at path */
- (void)loadRevisionsForFile:(NSString *)path;
/* Same as above but with a configurable limit to number of DBMetadata objects returned, up to 1000 */
- (void)loadRevisionsForFile:(NSString *)path limit:(NSInteger)limit;例如:[self restClient loadRevisionsForFile:@"YourFile“limit:10];
和这些委托方法,您可以从中获取文件的修订值数组
- (void)restClient:(DBRestClient*)client loadedRevisions:(NSArray *)revisions forFile:(NSString *)path;
- (void)restClient:(DBRestClient*)client loadRevisionsFailedWithError:(NSError *)error;例如:
- (void)restClient:(DBRestClient*)client loadedRevisions:(NSArray *)revisions forFile:(NSString *)path {
NSArray *dbRevisionsArray = revisions;
}
- (void)restClient:(DBRestClient*)client loadRevisionsFailedWithError:(NSError *)error{
[[[UIAlertView alloc] initWithTitle:@"Oops!!!" message:@"Please try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}现在您已经拥有了文件以前修订版的元数据数组。
这里有两种情况:
案例1:在Dropbox中恢复文件(在这里你只在Dropbox中恢复文件,要让你的恢复文件在你的应用程序中,你必须像往常一样将文件重新加载到你的数据库中)情况2:是在你的Database中恢复文件(*这里你只能在应用程序的数据库中恢复文件,而不是在Dropbox中,要在Dropbox中恢复遵循案例1:*)
案例1: 还原Dropbox中的文件
//将路径下的文件还原为给定版本的文件,还原后返回还原后文件的元数据
- (void)restoreFile:(NSString *)path toRev:(NSString *)rev;//及其委托方法
- (void)restClient:(DBRestClient*)client restoredFile:(DBMetadata *)fileMetadata;
- (void)restClient:(DBRestClient*)client restoreFileFailedWithError:(NSError *)error;例如:
DBMetadata *metaData = [dbRevisionsArray objectAtIndex:row];
NSString *revStr = metaData.rev;
[[self restClient] restoreFile:@"yourFilePath" toRev:revStr];然后将该文件加载到您的数据库路径。
就是这样。
案例2: 仅在应用程序的数据库中恢复文件(不在Dropbox中)
/*这将加载一个文件,因为它存在于给定的版本*/
- (void)loadFile:(NSString *)path atRev:(NSString *)rev intoPath:(NSString *)destPath;
- (void)restClient:(DBRestClient*)client loadedFile:(NSString*)destPath contentType:(NSString*)contentType metadata:(DBMetadata*)metadata;
- (void)restClient:(DBRestClient*)client loadFileFailedWithError:(NSError*)error;例如:[[self restClient] loadFile:@"yourFile" atRev:revStr intoPath:toYourDatabasePath];
发布于 2012-12-08 17:44:34
您可以使用可达性检查特定的主机:reachabilityWithHostName:
@implementation DDViewController {
Reachability *r;
}
- (void)viewDidAppear:(BOOL)animated {
self.view.backgroundColor = [UIColor yellowColor];
if(!r) {
r = [Reachability reachabilityWithHostName:@"dropbox.com"];
[r startNotifier];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
}
}
- (void)reachabilityChanged:(NSNotification*)note {
NSLog(@"%@", note);
self.view.backgroundColor = [note.object isReachable]?[UIColor greenColor] : [UIColor redColor];
}--TODO:获取DBRestClient使用的真实主机名--
https://stackoverflow.com/questions/13744190
复制相似问题