0

我有一个奇怪的问题,只有当所有s 都是相同的数字时NSFetchedResultsController才能处理(这使用 对实体进行排序。这有点像使用属性来保持播放列表顺序的播放列表。performFetchentity.numberNSFetchedResultsControllernumberindexNumber

- (IBAction)addSetPressed {
    int theNumber = [self.nameTextField.text intValue];
    WSet *set = [WSet wSetWithNumber:theNumber inManagedObjectContext:self.workout.managedObjectContext];
    [self.workout addExercisesObject:set];
}

self.nameTextField在我UITableView的页眉中。我会在那里输入一个数字,1例如,然后按一个UIButton调用addSetPressed. 此代码旨在将实体添加到我的模型中,并NSFetchedResultsController检测模型中的更改并更新我的UITableView.

这就是问题所在:当我在 中输入1(或任何数字)时self.nameTextField,我可以按UIButton我想按多少次,并且代码运行良好。但是当我更改数字时,self.nameTextField我得到一个错误:

[__NSCFNumber localizedCaseInsensitiveCompare:]: unrecognized selector sent to instance 0xb665b80
CoreData: error: Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.

在过去的 12 个小时里,我一直在搞乱我的代码并研究这个问题,但我想不通。

如果您给我小费,或者可以向我指出一些可以提供帮助的文献,那就太好了。

4

2 回答 2

3

固定的!

这就是问题所在。当我设置我的sortDescriptor时,我需要选择适当的选择器来比较我排序的属性类型。

这是正确的,因为 number 被处理为NSNumber

request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"number" ascending:YES selector:@selector(compare:)]];

我以前有选择器NSString

于 2012-06-11T01:14:58.717 回答
0

看起来NSNumber不喜欢被发送方法localizedCaseInsensitiveCompare:

我将尝试解决这个问题,看看是否可以NSString改为使用排序值。

如果您有更好的想法,请告诉我!

于 2012-06-11T00:44:26.090 回答