核心数据错误 – NSDate localizedCaseInsensitiveCompare:无法识别的select器发送到实例

我已经search了最近几个小时,但还没有find答案。 我实现了一个AVFoundation相机,我将图像数据保存到磁盘,并只存储在核心数据的path。 一切工作正常,但随机数拍摄的照片后,我得到这个错误:

CoreData:错误:严重的应用程序错误。 核心数据更改处理期间发生exception。 这通常是NSManagedObjectContextObjectsDidChangeNotification观察者中的一个错误。 – [__ NSDate localizedCaseInsensitiveCompare:]:无法识别的select器发送到实例

这是我的抓取请求代码:

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。 而且,在随机数量的照片拍摄之后,会发生此错误。 提前感谢您的帮助!

你的问题是,你不能在NSDate上调用localizedCaseInsensitiveCompare: :。 你需要改变它来compare: 。 检查NSDate上的Apple文档 。

localizedCaseInsensitiveCompare:方法需要一个NSString ( Apple文档 )。

这个SO问题也可能有帮助。

另外在这个网页上的表1 创build和使用sorting描述符