0
我一直在爲此掙扎兩天了,但我無法讓它工作。我與之戰鬥的部分原因是官方的Dropbox Sync API教程在解釋如何完成這件事方面做得很差。Dropbox Sync API不會下載任何文件
到目前爲止,我可以使用Dropbox API編寫任何東西,但獲得任何東西都是獨立的完全不同的野獸。
我有以下代碼(道歉,如果這是混亂的 - 我一直在測試了很多,它遲早會弄亂它只是自然)在我的應用程序委託的- (void)applicationDidBecomeActive:(UIApplication *)application
方法:
if([[[DBAccountManager sharedManager] linkedAccount] isLinked]) { DBError *erri = nil; if(!self.collectionsFile.open) { DBPath *newPath = [[DBPath root] childPath:[NSString stringWithFormat:@"metadata/%@", @"user_collections.json"]]; //self.collectionsFile = [[DBFilesystem sharedFilesystem] createFile:newPath error:nil]; self.collectionsFile = [[DBFilesystem sharedFilesystem] openFile:newPath error:&erri]; } DBFileStatus *newerStatus = self.collectionsFile.newerStatus; DBFileStatus *status = self.collectionsFile.status; NSLog(@"%@ erri", erri.localizedDescription); __block NSString *contents = [self.collectionsFile readString:nil]; NSLog(@"Contents %@", contents); [self.collectionsFile addObserver:self block:^(){ NSLog(@"Observer called"); if([[DBFilesystem sharedFilesystem] completedFirstSync]) { NSLog(@"First sync done"); if(newerStatus != nil) { NSLog(@"File is downloading."); }else { NSLog(@"Im here dude %@", contents); NSString *metadata = [(FTIBAppDelegate *)[[UIApplication sharedApplication] delegate] getMetadataPath]; NSString *collectionsFile = [NSString stringWithFormat:@"%@/%@", metadata, @"user_collections.json", nil]; [contents writeToFile:collectionsFile atomically:NO encoding:NSUTF8StringEncoding error:nil]; } if(status.cached) { NSString *metadata = [(FTIBAppDelegate *)[[UIApplication sharedApplication] delegate] getMetadataPath]; NSString *collectionsFile = [NSString stringWithFormat:@"%@/%@", metadata, @"user_collections.json", nil]; [contents writeToFile:collectionsFile atomically:NO encoding:NSUTF8StringEncoding error:nil]; } } }]; }
每當我重新安裝我的應用程序和Dropbox的鏈接,我得到這個漂亮的輸出:
2014-01-21 15:58:24.171 Mignori[913:60b] App linked successfully!
2014-01-21 15:58:24.301 Mignori[913:60b] [WARNING] ERR:
DROPBOX_ERROR_USAGE: sync.cpp:210: Checking file path before file
types info has been fetched. Wait for first sync to avoid creating a
file which may fail to upload later. 2014-01-21 15:58:24.473
Mignori[913:60b] [ERROR] ERR: DROPBOX_ERROR_ALREADYOPEN: file.cpp:188:
p(/v1/t5.json) already open (1) 2014-01-21 15:58:24.528
Mignori[913:60b] DropboxSync error - Error Domain=dropbox.com
Code=2004 "The operation couldn’t be completed. (dropbox.com error
2004.)" UserInfo=0x17028ba0 {desc=file.cpp:188: p(/v1/t5.json) already open (1)} 2014-01-21 15:58:24.531 Mignori[913:60b] The operation
couldn’t be completed. (dropbox.com error 2004.) erri 2014-01-21
15:58:24.532 Mignori[913:60b] Contents (null)
幾件事情要記住:
- 文件(user_collections.json)確實存在於我的Dropbox中 - 我用其他設備更新它。
- 我的文件是應用程序委託的強大屬性。
我會很感激任何幫助,讓這個工作。即使是一個(更好的)示例代碼,瞭解如何完成此操作。我可以在Dropbox中更新文件而沒有任何問題,但下載它們比我預期的要複雜得多。
或者,而不是線程輪詢,在'DBFilesystem'上使用'addObserver'。 – smarx
更好的主意。再次感謝@smarx。 –