Ошибка основных данных - 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 на этой веб-странице Создание и использование дескрипторов сортировки