首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone核心数据获取主密钥

iPhone核心数据获取主密钥
EN

Stack Overflow用户
提问于 2012-04-14 11:42:59
回答 1查看 4K关注 0票数 2

我正在开发一个使用CoreData的应用程序。

因此,在.sqlite文件中,它管理主键本身。

主键属性名为Z_PK

我的问题是,我需要从我的表中按主键升序排序的数据。

我在用那个密码

代码语言:javascript
复制
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_PK" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];

但这不管用。

当我在"_PK“中使用"title”时,它运行得很好

代码语言:javascript
复制
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];

那么,使用Table的主键有什么不同的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 04:09:35

CoreData管理持久对象图。它不是RDBM。您无法控制唯一的主键,因此无法控制它的值。这仅仅是一个实现细节,不应该出于任何原因被引用。

因此,为什么要根据它进行排序?我能想到几个原因..。

  1. 您希望按照将对象添加到数据库的顺序访问这些对象。但是,您可以通过多种方式轻松地做到这一点。

1a.您可以向每个实体添加一个字段。您可以将其设置为UUID,也可以设置为递增整数。

1b。您可以有一个实体,类似于"EntityList“,它与”实体“具有一对多的有序关系。

1c。你可以将一对一的关系从实体添加到自身,然后像链表一样管理它。每次添加实体时,都将其放在列表的末尾。

这两种解决方案都可以让您按添加实体对象的顺序访问实体对象。

  1. ,或者,你真的不在乎你看到的顺序,但是你想要一个一致的顺序。

2a。添加一个primaryKey属性,并为它分配一个UUID。

2b。使用有序到多的关系。

最后,如果您真的想要基于主键的访问,我建议您有一个单独的sqlite数据库,您可以使用它进行特殊的键访问。然后,您可以将一个键关联到CoreData存储中的对象的CoreData。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10153335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档