【问题标题】:iOS - Check if file exists Dropbox Sync API iOS SDKiOS - 检查文件是否存在 Dropbox Sync API iOS SDK
【发布时间】:2013-05-21 05:50:55
【问题描述】:

我是 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 class (1) 检查文件信息是否存在。如果 (1) true -> 我们在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];

【问题讨论】:

    标签: ios iphone objective-c sync dropbox-api


    【解决方案1】:

    尝试获取路径的DBFileInfo

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

    【讨论】:

    • 我成功了!因此,如果文件存在(我们按照您的建议通过阅读其信息来检查),我必须在 writeString:error 之前 openFile:error DBFile 它。现在它可以正确同步/更新!我将更新我的问题作为解决方案。非常感谢@rmaddy!
    猜你喜欢
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多