Начальные точки для создания приложения, которое позволяет пользователю добавлять элементы в два отдельных списка
Во-первых, я новичок в SO и новичок в разработке iOS. Я закончил курс CS193P в iTunes и готов приступить к работе с моим первым подходящим приложением. Я настроил прототип, и мне просто нужно несколько указателей, с чего начать (нужна уверенность).
Предпосылка приложения состоит в том, чтобы позволить пользователю добавлять записи в 1 из 2 доступных списков; список выдачи или получения. Записи будут включать в себя такие вещи, как "Имя события", "Имя", "Дата" и т. Д. Кроме того, у пользователя будет возможность, конечно, просмотреть списки и просмотреть записи; Я хочу позволить пользователю выбирать, будут ли они искать по имени, дате или событию.
У меня полностью настроен прототип, и мне просто интересно, будет ли этот вид приложения похож на адресную книгу? Пользователь может добавить имя человека (или выбрать имя из контактов) и т. Д.
Приносим извинения за наш выдающийся основной вопрос, но есть ли у кого-нибудь хорошие ориентиры для создания списка, добавляемого к определенному списку. Я знаком с Модальными Контроллерами Представления и делегатами; Я в основном задаюсь вопросом, что я должен использовать, чтобы "хранить" все, что добавляют пользователи. Должен ли я использовать Core Data или какой-то другой метод и т. Д.?
Спасибо! Amit
3 ответа
Да, вы должны использовать базовые данные для хранения записей. В противном случае, когда пользователь снова откроет приложение, все записи пропадут.
Ваш вопрос очень общий, поэтому вот мой общий ответ: я бы порекомендовал использовать Core Data для хранения списков и NSFetchedResultsController для их отображения. Я также рекомендую вам взглянуть на бесплатную платформу Sensible TableView, которую я регулярно использую для автоматизации задач, которые очень похожи на те, что у вас под рукой.
Я использовал NSKeyedArchivers для хранения списков. http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSKeyedArchiver_Class/Reference/Reference.html
Очень легко управлять, и он может хранить, сохранять и извлекать все ваши данные легко.
Примером будет список (NSMutableArray) объектов. Каждый объект реализует NSCoding и имеет функции initWithCoder: и encodeWithCoder:.
например (при условии, что объекты имеют свойство name и date)
- (id) initWithCoder:(NSCoder *){
self = [super init];
if (self){
[self setName:[aDecoder decodeObjectForKey:@"name"]];
[self setDate:[aDecoder decodeObjectForKey:@"date"]];
}
return self;
}
- (void) encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:name forKey:@"name"];
[aCoder encodeObject:date forKey:@"date"];
}
Тогда вы можете просто иметь свой NSMutableArray, к которому вы добавляете эти объекты, управлять чем-то, что имеет следующие функции, и просто вызывать saveChanges:
- (NSString *) itemArchivePath{
NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [documentDirectories objectAtIndex:0];
return [documentDirectory stringByAppendingPathComponent:@"myArchiveName.archive"];
}
- (BOOL) saveChanges{
NSString *path = [self itemArchivePath];
return [NSKeyedArchiver archiveRootObject:myList toFile:path];
}
С этими двумя реализованными функциями вы можете просто вызвать saveChanges.
И чтобы получить список позже, после следующего запуска, в init вашего менеджера:
- (id) init{
self = [super init];
if (self){
NSString *path = [self itemArchivePath];
myList = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
// If the array hadn't been saved previously, create a new empty one
if (!myList){
myList = [[NSMutableArray Alloc] init];
}
}
}