Нужно получить NSObject из DidSelectRow

У меня есть календарь в моем представлении, который загружается со следующим кодом выборки:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:self.managedObjectContext];
    [request setEntity:entity];
    [request setResultType:NSDictionaryResultType];
    [request setReturnsDistinctResults:YES];
    [request setPropertiesToFetch :[NSArray arrayWithObject:@"timeStamp"]];

    NSError *error;
    NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
    NSArray *tempData = [objects valueForKey:@"timeStamp"];

    NSMutableArray * data1 = [NSMutableArray array];
    NSCalendar * gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
    [gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    NSUInteger flags = ( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit );
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss Z"];
    [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

    [tempData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSDate * date = [gregorian dateFromComponents:[gregorian components:flags fromDate:obj]];
        [data1 addObject:[formatter stringFromDate:date]];
    }];
    self.data = data1;

Когда я выбираю дату в календаре, у меня есть следующий код, который будет переходить к следующему подробному просмотру

- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d { 
// Assuming `data` is from the code above & the date is in `00:00:00 +0000` form.

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

NSString * dateString = [formatter stringFromDate:d];

if ( [data containsObject:dateString] ) {
    // Push object to detail view??
}

}

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


person Jon    schedule 26.06.2011    source источник
comment
Вы уверены, что для каждой даты существует только один объект?   -  person Deepak Danduprolu    schedule 26.06.2011
comment
Ага, на свидание всего 1 объект. Я сделал так, что 2 объекта НЕ МОГУТ иметь одинаковую отметку времени.   -  person Jon    schedule 26.06.2011
comment
А как насчет 2011-06-26 09:51:00 .. и 2011-06-26 09:50:00 ..? Они не одинаковые timeStamp верно?   -  person Deepak Danduprolu    schedule 26.06.2011
comment
Нет, есть только один объект в день. поэтому на 2011-06-26 есть только 1 объект, независимо от времени и минуты.   -  person Jon    schedule 27.06.2011


Ответы (1)


Вам нужно будет использовать экземпляр NSPredicate для получения конкретных данных. Вам нужно будет добавить это в пункт if выше,

if ( [data containsObject:dateString] ) {
    NSDate * searchDate = [formatter dateFromString:dateString];
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@" timeStamp == %@ ", searchDate];

    /* Create a fetch request with the predicate above and get the results from the MOC */
}
person Deepak Danduprolu    schedule 27.06.2011