2013-05-21 33 views
3

我是iOS開發新手,正在開發支持Dropbox同步文本文件的應用程序。iOS - 檢查文件是否存在Dropbox Sync API iOS SDK

在Dropbox網站上關注了教程,但我無法檢查文件是否存在。

由於實施:

NSString *dropboxFileExtension; 
switch ([[NSUserDefaults standardUserDefaults] integerForKey:kFileExtension]) { 
    case txt: 
     dropboxFileExtension = [NSString stringWithFormat:@"%@.txt", titleString]; 
     break; 
    case md: 
     dropboxFileExtension = [NSString stringWithFormat:@"%@.md", titleString]; 
     break; 
    case markdown: 
     dropboxFileExtension = [NSString stringWithFormat:@"%@.markdown", titleString]; 
     break; 
    default: 
     break; 
} 

DBPath *newPath = [[DBPath root] childPath:[NSString stringWithFormat:@"%@", dropboxFileExtension]]; 
DBFile *file = [[DBFilesystem sharedFilesystem] createFile:newPath error:nil]; 
[file writeString:self.note.contents error:nil]; 

如果我更新其內容,這將引發一個錯誤該文件是存在的。

那麼如何檢查該文件是否存在,然後執行適當的操作,如覆蓋文件或更新文件。謝謝!

編輯/工作解決方案:邏輯上,我只需檢查文件信息是否存在使用DBFileInfo class(1)。如果(1)爲真 - >我們在writeString:error之前呼叫openFile:error,否則請致電createFile:error。正如@rmaddy所建議的那樣。

所以......

DBPath *newPath = [[DBPath root] childPath:[NSString stringWithFormat:@"%@", dropboxFileExtension]]; 
DBError *error = nil; 
DBFileInfo *info = [[DBFilesystem sharedFilesystem] fileInfoForPath:newPath error:&error]; 
if (info) { 
    // file exists 
    NSLog(@"size %lli byte(s), modified dated %@", info.size, info.modifiedTime); 
    _file = [[DBFilesystem sharedFilesystem] openFile:newPath 
               error:nil]; 
} else { 
    _file = [[DBFilesystem sharedFilesystem] createFile:newPath 
                error:nil]; 
} 

[_file writeString:self.note.contents error:nil]; 

回答

6

嘗試獲得了DBFileInfo的路徑:

DBError *error = nil; 
DBFileInfo *info = [[DBFileSystem sharedFileSystem] fileInfoForPath:newPath error:&error]; 
if (info) { 
    // file exists 
} 
+0

我得到了它的工作原理!所以如果文件存在(我們通過閱讀它的信息來檢查你的建議),我必須在'writeString:error'之前'openFile:error''DBFile'。現在它正確同步/更新!我會將我的問題更新爲解決方案。謝謝,@rmaddy! –

相關問題