Используйте NSCoding для создания редактируемого пользователем Plist - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь создать редактируемый пользователем лист рассылки, в котором пользователь может сохранить созданную пользователем программу тренировки, включая строки, на которые ссылается другой data.plist в комплекте приложения.

Я предполагаю, что NSCoding - лучшийспособ пойти об этом.Пока у меня есть настройка интерфейса в виде навигационной панели и табличного представления.

Я хочу, чтобы он был пустым по умолчанию, и пользователь должен нажать «+» в правом верхнем углу навигационной панели.Затем он мог ввести имя для записи в массиве, например, день сундука или день бицепса.И в этом массиве будет словарь или другой массив строк конкретных упражнений для этого дня, например жим лежа или бицепс.

Этот список должен быть редактируемым, поэтому он будет находиться в папке с документами пользователя, а не в комплекте приложений.

Пример:

Верхний массив состоит из Chest Day,Back Day, Leg Leg.В словаре «День сундука» укажите жим лежа, подъем груди, отжимание и т. Д.

Обновление:

Добавление этого метода для поиска файла процедуры;

    -(void)loadData
{
    if(YES)
    {
        NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString* routineFile = [documentsPath stringByAppendingPathComponent:@"routine.plist"];
        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:routineFile];
    }
    else
    {
        //load file
    }
}

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

NSCoding - это протокол, используемый NSArchiver, NSKeyedArchiver и т. Д., Но не для сериализации массива в список свойств.

Забудьте об идее, что пользователь собирается редактировать список свойств. Пользователь собирается редактировать данные в вашем приложении - тот факт, что они хранятся в виде списка свойств, является лишь деталью реализации. Когда ваше приложение запускается, вы читаете данные, хранящиеся в файле данных. Пользователь редактирует это, смотрит на это, что угодно. В какой-то момент позже, возможно, после каждого редактирования, возможно, непосредственно перед закрытием приложения, вы записываете данные обратно в файл. Поскольку это список свойств, не беспокойтесь об обновлении файла; у вас уже есть все данные, поэтому напишите новый список свойств, а затем используйте этот файл для замены старого.

Возможно, я ошибаюсь, и вы действительно собираетесь отредактировать список свойств вручную с помощью текстового редактора. Это было бы ошибкой. Замечательно, что списки свойств удобочитаемы, но просьба пользователей отредактировать ваши файлы необработанных данных вручную является убедительным свидетельством того, что ваше приложение сломано. Вся цель вашего приложения - отслеживать эту информацию для пользователя; если бы они хотели использовать текстовый редактор для управления им, им не понадобилось бы ваше приложение. Итак, с учетом сказанного, я надеюсь, что я не ошибаюсь. ; -)

1 голос
/ 23 марта 2011

Не думаю, что я бы использовал для этого NSCoding - если все, с чем вы работаете, это стандартные объекты plist, такие как NSArray, NSDictionary и NSString, то метод -writeToFile верхнего уровня массива: atomically: method это простой способ сделать работа.

...