Я делаю приложение для будильника для iPhone, и мне было интересно, как лучше всего сохранить мои данные. Я пытался реализовать CoreData, но это не работает. Я посмотрел и обнаружил, что для использования CoreData вы должны установить флажок «Использовать CoreData для хранения» при создании нового проекта в Xcode, чего я не сделал. Вместо этого я создал приложение на основе представлений. Могу ли я по-прежнему реализовывать CoreData или мне следует использовать что-то еще, например, plist или SQLite.
Как сохранить данные приложения будильника?
comment
Если это небольшой объем данных, plist может подойти, в противном случае используйте CoreData.
- person zaph   schedule 28.08.2011
comment
Я просто хочу сохранить объект будильника для каждого будильника, который может создать пользователь, например дату пожара, метку и интервал повторения. Как вы думаете, plist сможет справиться с этим?
- person Souljacker   schedule 28.08.2011
comment
Конечно, все еще можно использовать основные данные. Просто создайте новый проект с выбранным параметром основных данных и посмотрите на проект, особенно на делегат приложения. Вы можете копировать и вставлять большое количество основного кода данных в другой проект.
- person HeikoG   schedule 28.08.2011
comment
Я думаю, что plist будет в порядке для этого
- person HeikoG   schedule 28.08.2011
comment
Если вы используете CoreData, обязательно изначально установите управление версиями.
- person zaph   schedule 28.08.2011
comment
Вы всегда можете внедрить Core Data, даже если вы не выбрали его при первом создании проекта. Но вам придется вручную импортировать инфраструктуру Core Data и добавить все необходимые методы Core Data и переменные экземпляра. Именно поэтому рекомендуется просто добавить его в самом начале. Если вы добавите новый проект с Core Data, вы измените только файлы AppDelegate, и вы сможете внести все коррективы там, и приложение заработает быстро!
- person Ladislav   schedule 28.08.2011
comment
Я думаю, что, возможно, я выберу plist, потому что мне все равно не нужно сохранять так много данных. Но если я использую plist, будут ли проблемы с памятью?
- person Souljacker   schedule 28.08.2011
Ответы (1)
Что бы я сделал, просто сохранил данные в NSUserDefaults как массив словарей.
Например, допустим, у вас есть:
NSDictionary *alarmOne = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateOne, labelOne, repeatIntervalOne, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSDictionary *alarmTwo = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateTwo, labelTwo, repeatIntervalTwo, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSArray *alarmsToBeSaved = [NSArray arrayWithObjects:alarmOne, alarmTwo, nil];
//save the alarms
[[NSUserDefaults standardUserDefaults] setObject:alarmsToBeSaved forKey:@"MyAlarms"];
//get alarms back from NSUserDefaults
NSArray *alarms = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"];
for (NSDictionary *alarm in alarms){
NSLog(@"label of alarm: %@", [alarm objectForKey:@"label"]); //output alarm labels for example!
}
Вы также можете сохранить этот массив на диск в каталоге документов приложения...
Базовые данные обычно лучше, когда у вас есть большие наборы данных, которые вы хотите быстро извлечь из базы данных (поиск) и лучше контролировать использование памяти.
Как добавить новый будильник?
NSDictionary *alarmThree = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fireDateThree, labelThree, repeatIntervalThree, nil] forKeys:[NSArray arrayWithObjects:@"fireDate", @"label", @"repeatInterval"]];
NSMutableArray *newAlarms = [NSMutableArray arrayWithObjects:[[NSUserDefaults standardUserDefaults] objectForKey:@"MyAlarms"]];
//add the new alarm Dict
[newAlarms addObject:alarmThree];
//save the array
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithArray:newAlarms] forKey:@"MyAlarms"];
person
Ladislav
schedule
28.08.2011
Итак, как мне сохранить данные, добавленные пользователями?
- person Souljacker; 28.08.2011
Добавлен способ сохранения третьего будильника
- person Ladislav; 28.08.2011