我有一个实体标题,它有一个属性NSDictionary,它在模型中被声明为可转换的。现在我想不对fetchedRequestController中的标头数组进行排序。传递nil或null对象会产生错误。请帮忙。
让我从最后一次重构:如果我有一个实体,带有可转换的属性标题。我在生成的类中将id类型更改为NSDictionary。我现在需要访问字典的键作为entity.attribute name.key ...我得到一个错误,因为这个类不是键的键值编码投诉:(键)...这个问题的解决方法是什么。
// Create and configure a fetch request with the Book entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"headers" inManagedObjectContext:self.tableCellGenericMoc];
[fetchRequest setEntity:entity];
// Create the sort descriptors array.
NSSortDescriptor *headersDescriptor = [[NSSortDescriptor alloc] initWithKey:@"headersDictionary" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:headersDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Create and initialize the fetch results controller.
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.tableCellGenericMoc sectionNameKeyPath:@"headresDictionary" cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
上面的选择器给出了一个错误,因为它无法对headersDictionary ...
进行排序答案 0 :(得分:1)
为什么要在Core Data中存储NSDictionary?这就是简单地说,做错了。如果你想要像字典这样的东西,只需在一对多关系的另一端创建一个子对象,该关系具有名称和值。
如果您正确设计模型,那么您将不会遇到现在遇到的问题,并且可以使用谓词直接过滤NSFetchRequest中的排序描述符。
哦,谢谢你...问题是我从网上得到的字典没有固定的Keys结构..所以我必须得到字典,因为它是一个可转换的属性
仍然没有任何意义。我描述的设计与在可转换对象内部具有字典相同,除了它在核心数据级别上有用。您不需要在我描述的设计中使用固定键。
重新思考你的设计,这个问题变得无关紧要。