У меня есть приложение, которое сохраняет текст и дату из UIDatePicker, а затем показывает эту заметку, если вы вернулись к этой дате в UIDatePicker.
Отлично работает! Только я обнаружил, что установка даты UIDatePicker на сегодня останавливает работу CoreData!
Это только когда я запускаю эту строку setDate, это останавливает работу данных ядра. Приложение работает без сбоев, просто не сохраняет никаких данных. Если я прокомментирую эту строку, это работает шарм. Но мне нужно иметь UIDatePicker сегодня, когда приложение загружается.
Я использую это при запуске приложения:
NSDate *now = [[NSDate alloc] init];
[datePicker setDate:now];
Это для извлечения заметки:
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *testEntity = [NSEntityDescription entityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[fetch setEntity:testEntity];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"dateSaved == %@", datePicker.date];
[fetch setPredicate:pred];
NSError *fetchError = nil;
NSArray *fetchedObjs = [self.managedObjectContext executeFetchRequest:fetch error:&fetchError];
if (fetchError != nil) {
NSLog(@"fetchError = %@, details = %@",fetchError,fetchError.userInfo);
}
noteTextView.text = [[fetchedObjs objectAtIndex:0] valueForKey:@"savedText"];
И это, чтобы сохранить заметку:
NSManagedObject *newDatedText;
newDatedText = [NSEntityDescription insertNewObjectForEntityForName:@"DatedText" inManagedObjectContext:self.managedObjectContext];
[newDatedText setValue:noteTextView.text forKey:@"savedText"];
[newDatedText setValue:datePicker.date forKey:@"dateSaved"];
NSError *saveError = nil;
[self.managedObjectContext save:&saveError];
if (saveError != nil) {
NSLog(@"[%@ saveContext] Error saving context: Error = %@, details = %@",[self class], saveError,saveError.userInfo);
}