Вы можете оставить атрибут 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;
}