簡體   English   中英

iOS - 檢查文件是否存在Dropbox Sync API iOS SDK

[英]iOS - Check if file exists Dropbox Sync API iOS SDK

我是iOS開發的新手,並且開發了支持Dropbox同步文本文件的應用程序。

在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類 (1)檢查文件信息是否存在。 如果(1)為true - >我們在writeString:error之前調用openFile:error writeString: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];

嘗試獲取路徑的DBFileInfo

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM