2015-06-23 2 views
0

Я новичок программист, и я боролся в течение двух недель по этой проблеме. Я использую JTCalendar из cocoapods. Он предназначен для возвращения даты под - (BOOL)calendarHaveEvent:(JTCalendar *)calendar date:(NSDate *)date { , которая будет отображаться как точка в календаре, чтобы показать событие. Для того, чтобы сохранить свое мероприятие, я использую следующий код:Предикат основных данных для приложения события календаря

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
       NSManagedObjectContext *context = [appDelegate managedObjectContext]; 
NSManagedObject *savedate; 
       savedate = [NSEntityDescription insertNewObjectForEntityForName:@"AlarmData" inManagedObjectContext:context]; 
       [savedate setValue:CT forKey:@"alarmDate"]; 

       [context save:&error]; 

       BOOL isSaved = [appDelegate.managedObjectContext save:&error]; 

       NSLog(@"success!!!!, %@", savedate); 

и следующие попытки извлечь дату и «вернуться» это:

'

- (BOOL)calendarHaveEvent:(JTCalendar *)calendar date:(NSDate *)date 
{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 





    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy"]; 
    NSString *textDate = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:[NSDate date]]]; 
    NSLog(@"Date %@",textDate); 

    NSDate *startDate = [dateFormatter dateFromString:@"31-12-1981"]; 
    NSDate *endDate = [dateFormatter dateFromString:@"31-12-2999"]; 


    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(alarmDate >= %@) AND (date <= %@)", startDate, endDate]; 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:[NSEntityDescription entityForName:@"AlarmData" inManagedObjectContext:context]]; 
    [request setPredicate:predicate]; 

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

     NSString *alarmDate = [ NSString stringWithFormat:@"dd-MM-yyyy"]; 

     for (NSManagedObject *obj in matchingData) { 
      alarmDate = [obj valueForKey:@"alarmDate"]; 

      return alarmDate;' 

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

https://drive.google.com/file/d/0Bw0Kf2Z9-yb8Zm5LWnZUUkRJRzQ/view?usp=sharing

Я только хочу, чтобы моя единственная дата вернулась, давно застряла. Спасибо!

+0

При работе с NSDateFormatter для чего-либо, что не является пользовательским интерфейсом, используйте предустановленный язык. Если вы этого не сделаете, система будет использовать систему, которая может быть источником ошибок. Вы также можете проверить ошибку запроса. – Imotep

ответ

0
for (NSManagedObject *obj in matchingData) { 
      alarmDate = [obj valueForKey:@"alarmDate"]; 

      return alarmDate;' 

Вы всегда возвращаете alamrDate первого объекта независимо от того, какая у вас дата в параметре метода. Используйте свой параметр, чтобы проверить дату, а затем верните, есть ли alerm для этой даты или нет.