我正在开发一个使用CoreData的应用程序。
因此,在.sqlite文件中,它管理主键本身。
主键属性名为Z_PK。
我的问题是,我需要从我的表中按主键升序排序的数据。
我在用那个密码
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_PK" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];但这不管用。
当我在"_PK“中使用"title”时,它运行得很好
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];那么,使用Table的主键有什么不同的方法吗?
发布于 2012-04-15 04:09:35
CoreData管理持久对象图。它不是RDBM。您无法控制唯一的主键,因此无法控制它的值。这仅仅是一个实现细节,不应该出于任何原因被引用。
因此,为什么要根据它进行排序?我能想到几个原因..。
1a.您可以向每个实体添加一个字段。您可以将其设置为UUID,也可以设置为递增整数。
1b。您可以有一个实体,类似于"EntityList“,它与”实体“具有一对多的有序关系。
1c。你可以将一对一的关系从实体添加到自身,然后像链表一样管理它。每次添加实体时,都将其放在列表的末尾。
这两种解决方案都可以让您按添加实体对象的顺序访问实体对象。
2a。添加一个primaryKey属性,并为它分配一个UUID。
2b。使用有序到多的关系。
最后,如果您真的想要基于主键的访问,我建议您有一个单独的sqlite数据库,您可以使用它进行特殊的键访问。然后,您可以将一个键关联到CoreData存储中的对象的CoreData。
https://stackoverflow.com/questions/10153335
复制相似问题