我在UITableView中显示存储在Core Data中的对象,并且在通过对象的可转换属性之一对这些对象进行排序时遇到问题。我应该指出,我使用NSFetchedResultsController作为Core Data存储和我的表视图之间的控制器。当我只是使用一个数组来保存我的所有对象时,我可以毫无问题地对它们进行排序。我正在使用FRC,因为我需要将数据分组在带有节标题的部分中,而FRC使这很容易。
让我们称这些对象为“测量”对象。每个Measurement对象都有一个distance属性。该距离属性属于自定义类EPHDistance,因此它在Core Data模型中设置为Transformable属性。
简而言之,按距离 对Measurement对象进行排序是有效的,但只有在我编辑了由Core Data存储的对象或者我添加了一个新对象之后商店。编辑商店并返回到我的表,按顺序列出所有的测量对象,一切都很好。它只是初始启动和查看表视图,其中对象未正确排序。我实际上在我的EPPDistance -compare:方法中放置了一个NSLog语句,当我在Core Data存储中添加/编辑对象之前对对象进行排序时,它不会被调用。对于它的价值,如果我按照它们的“日期”属性(这是一个NSDate)对这些测量对象进行排序,它就会很有效。
我对Core Data没有超级经验,这是我第一次真正尝试使用NSFetchedResultsController,所以我对此感到有些困惑。任何意见都将不胜感激。
非常感谢, 埃里克
答案 0 :(得分:0)
您可以在Measurement
类调用-(NSString*)distanceCompareString
中创建一个可选方法,该方法返回一个字符串,帮助您从EPHDistance
对象中进行排序。在NSSortDescriptor中,您只需使用distanceCompareString
作为排序键。