Я новичок в разработке для 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) верно -> мы вызываем openFile:error
перед writeString:error
, иначе вызываем createFile:error
. Как предложил @rmaddy.
So...
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];
openFile:error
DBFile
передwriteString:error
его. Теперь он синхронизируется / обновляется правильно! Я обновлю свой вопрос как решение. Большое спасибо, @rmaddy! 21.05.2013