iOS Сохранение данных формы в несколько файлов - PullRequest
0 голосов
/ 10 марта 2012

Я работаю над приложением, в котором есть форма.Когда форма заполнена, и пользователь нажимает кнопку «Отправить», файл сохраняется с именем человека и текущей датой / временем.Каждый раз, когда форма заполняется и отправляется, (к сожалению) файл перезаписывается текущим файлом.У меня вопрос: как я могу сохранять одну и ту же форму в виде другого файла каждый раз, когда она заполняется без перезаписи предыдущего файла?

1 Ответ

0 голосов
/ 10 марта 2012

Я написал алгоритм для добавления числа к любому файлу с конфликтующим именем:

- (NSString *)getDocumentPath{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent://nameOfFile];

        //Check For Duplicate Objects
        if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
            int i = 0;
            //Duplicate Found, enter while loop to append number to it.
            while ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
                //nil out string
                NSString *newString = nil;
                NSString *pathExtension = nil;
                //build string with new number
                newString = [NSString stringWithFormat:@"%@%d",[[self.itemArray objectAtIndex:self.tableView.indexPathForSelectedRow.row] stringByDeletingPathExtension],i];
                pathExtension =[[self.itemArray objectAtIndex:self.tableView.indexPathForSelectedRow.row] pathExtension];
                //query again for duplicates
                if (![[NSFileManager defaultManager] fileExistsAtPath:[[[paths objectAtIndex:0]stringByAppendingPathComponent:newString]stringByAppendingPathExtension:pathExtension]]) {
                    //success, break,write to file
                    return [[[paths objectAtIndex:0]stringByAppendingPathComponent:newString]stringByAppendingPathExtension:pathExtension];
                    break;
                }
                //nope, increment int and try again
                i++;
            }
        }
    else return path;

}
...