2013-05-21 3 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]; 

Если я обновить его содержимое, это будет выдает ошибку, что файл является существует.

Так как я могу проверить, что файл существует, а затем выполнить соответствующие действия, такие как перезапись файла или файл обновления. Спасибо!

EDIT/Working Solution: Логично, мне просто нужно проверить, существует ли информация о файле, используя DBFileInfo class (1). Если (1) true ->, мы вызываем 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]; 

ответ

6

Попробуйте получать DBFileInfo на пути:

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

Я получил это работает! Итак, если файл существует (мы проверяем, читая его информацию, как вы предложили), я должен 'openFile: error'' DBFile' перед 'writeString: error' it. Теперь он синхронизируется/обновляется правильно! Я буду обновлять свой вопрос в качестве решения. Спасибо тонну, @rmaddy! –

Смежные вопросы