Обновление определенного атрибута основных данных - PullRequest
1 голос
/ 27 февраля 2012

Я занимаюсь разработкой приложения, в котором я использовал базовую структуру данных для поддержки базы данных.Моя сущность содержит три атрибута: имя, время начала и время окончания списка приложений.Я получаю правильные значения для имени и атрибута времени начала.
Теперь моя проблема в том, что мой атрибут времени окончания должен содержать значение времени начала следующих записей.Если у кого-то есть идеи по этому поводу, пожалуйста, дайте мне знать.

Спасибо

1 Ответ

0 голосов
/ 27 февраля 2012

Вы можете оставить атрибут endTime пустым, пока не создадите следующую сущность. В категории «+ Создать» для сущности получите последний / первый объект (при условии, что вы используете упорядоченные сущности) и обновите значение endTime, указав то же значение, что и для нового startTime.

Если ваши объекты не упорядочены, это может быть немного сложно, так как все объекты находятся в наборе. Но если вы заказали, у вас все хорошо, поскольку NSOrderedSet отвечает на lastObject (и firstObject).

Наслаждайтесь,

Дэмиен

РЕДАКТИРОВАТЬ: Вот пример фабричного метода, который либо 1) возвращает существующую сущность запаса для символа запаса, либо 2) создает новую сущность для этого символа. Довольно легко изменить, чтобы получить объекты и выбрать первый / последний в зависимости от вашего порядка сортировки. Снова посмотрите классы базовых данных от профессора Хегарти.

 + (Stock *)stockForSymbol:(NSString *)symbol inManagedObjectContext:(NSManagedObjectContext *)context {
  Stock *stock = nil;

  NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Stock"];
  request.predicate = [NSPredicate predicateWithFormat:@"symbol = %@",symbol];
  NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"symbol" ascending:YES];
  request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

  NSError *error = nil;
  NSArray *matches = [context executeFetchRequest:request error:&error];

  if (!matches || [matches count] > 1) {
      // handle error
  } else if ([matches count] == 0) {
      stock = [NSEntityDescription insertNewObjectForEntityForName:@"Stock" inManagedObjectContext:context];
      stock.symbol = symbol;
      stock.strategyPosition = [NSNumber numberWithInt:StrategyPositionFlat];
      stock.userPosition = stock.strategyPosition;
      stock.userOwns = [NSNumber numberWithBool:NO];
  } else {
      stock = [matches lastObject];
  }
  return stock;
}
...