Второй метод, который вы ищете, не подходит для добавления к самой сущности. Он должен находиться где-то выше сущностей, скорее всего, в вашем объекте контроллера.
Первый метод выглядит следующим образом:
- (void)updateDate:(NSDate*)date andValue:(NSInteger)value
{
[self setValue:date forKey:@"date"];
[self setValue:[NSNumber numberWithInteger:value] forKey:@"value"];
}
Это довольно прямая KVC (Key-Value Coding), и я настоятельно рекомендую вам прочитать документы Apple по этому вопросу.
Для вашего другого метода, который должен быть в контроллере, вам нужно выполнить выборку, чтобы найти запись.
- (id)findRecordForDate:(NSDate*)date inManagedObjectContext:(NSManagedObjectContext*)moc
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:moc]];
[request setPredicate:[NSPredicate predicateWithFormat:@"date == %@", date]];
NSError *error = nil;
NSArray *objects = [moc executeFetchRequest:request error:&error];
NSAssert1(error == nil, @"Error fetching object: %@", [error localizedDescription]);
return [objects lastObject];
}
- (void)incrementEntityWithDate:(NSDate*)date
{
id entity = [self findRecordForDate:date inManagedObjectContext:[self managedObjectContext]];
NSInteger value = [[entity valueForKey:@"value"] integerValue];
value += 1;
[entity setValue:[NSNumber numberWithInteger:value] forKey:@"value"];
}
Это также очень простой доступ к базовым данным. Я рекомендую вам прочитать о том, как работает Core Data.
Кстати, использование уникальной даты - очень плохой дизайн.
UPDATE
Маркус, спасибо за ответ. Это действительно полезно. Я новичок в основных данных, поэтому у меня есть несколько вопросов, чтобы прояснить ситуацию.
Код для первого метода устанавливает два значения, но он не вставляет новую запись в таблицу. Как я могу вставить вновь созданную запись в таблицу?
Вам нужно прочитать о том, как работает Core Data. У Apple есть отличная документация о том, как работает Core Data, и если это не поможет, вы можете купить мою книгу. В интернете содержится масса информации о том, как использовать базовые данные.
Куда мне поставить первый метод? в моем .m файле?
Это основная цель-C. Если вы задаете этот вопрос, вам нужно сделать шаг назад и сначала изучить основы языка.
Вы упомянули, что мне нужно добавить второй метод в контроллер. Но контроллер определен в файле xib. Как я могу добавить второй метод к этому?
Контроллер никогда не определяется в xib-файле. На него есть ссылка в файле xib. Опять же, вам нужно вернуться к началу работы Objective-C и изучить основы, прежде чем погрузиться в это глубокое погружение.