Ошибка основных данных - NSDate localizedCaseInsensitiveCompare: нераспознанный селектор отправлен на экземпляр

Я искал последние несколько часов, но пока не нашел ответа. Я реализовал камеру AVFoundation, я сохраняю данные изображения на диск и сохраняю только путь в основных данных. Все работает нормально, но после случайного количества сделанных фотографий я получаю эту ошибку:

CoreData: ошибка: серьезная ошибка приложения. Исключение было обнаружено при обработке изменений базовых данных. Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification. -[__NSDate localizedCaseInsensitiveCompare:]: нераспознанный селектор, отправленный экземпляру

Это мой код запроса на получение:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Photo"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"notebook = %@", notebookItem];
[request setPredicate:predicate];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"dateTaken"
                                                              ascending:NO
                                                               selector:@selector(compare:)]];

А вот как я сохраняю данные в отдельном классе:

//I create a photo Object to save to core data and set properties like dateTaken and tittle

//Here is where I create the path name
NSDate *dateString = [[NSDate alloc] init];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"];
NSString *path = [formatter stringFromDate:dateString];

//Now I save to disk
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// the path to write file
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:path];
NSLog(@"path: %@", path);
[[[self captureManager] ImageDataObject] writeToFile:filePath atomically:YES];

photo.imagePath = filePath;

[notebookItem addPhotosObject:photo];
[self.SharedDocumentHandlerInstance saveDocument];

Я обнаружил точку сбоя, и это происходит в строке кода, где я сохраняю документ (последний из приведенных выше), но, возможно, именно запрос на выборку вызывает его. Я также установил self.fetchedResultsController.delegate = nil в моей таблице. И снова эта ошибка возникает после того, как сделано случайное количество фотографий. Спасибо за любую помощь заранее!

1 ответ

Ваша проблема в том, что вы не можете позвонить localizedCaseInsensitiveCompare: на NSDate. Вы должны изменить это на compare:, Проверьте документацию Apple на NSDate,

Метод localizedCaseInsensitiveCompare: требует NSString ( Документация Apple).

Этот ТАК вопрос также может быть полезным.

Также таблица 1 на этой веб-странице Создание и использование дескрипторов сортировки

Другие вопросы по тегам