gpt4 book ai didi

iPhone核心数据获取主键

转载 作者:行者123 更新时间:2023-12-03 20:43:04 26 4
gpt4 key购买 nike

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

所以在.sqlite文件中,它管理主键本身。

主键属性名称为Z_PK

我的问题是,我希望表中的数据按主键升序排序。

我正在使用该代码

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_PK" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];

但是它不起作用。

当我使用“title”而不是“_PK”时,它工作正常

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];

那么有什么不同的方式来使用表的主键吗?

最佳答案

CoreData 管理持久对象图。它不是 RDBM。您无法控制唯一主键,因此您无法控制它的值。它只是一个实现细节,不应以任何理由引用。

那么,为什么要根据它进行排序呢?我可以想到几个原因......

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

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

1b。您可以有一个实体,例如“EntityList”,它与“Entity”具有有序的一对多关系。

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

这两种解决方案都使您能够按照添加顺序访问实体对象。

  1. 或者,您确实不在乎看到它们的顺序,但您想要一致的顺序。

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

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

最后,如果您确实想要基于主键的访问,我建议您使用一个单独的 sqlite 数据库用于特殊键控访问。然后,您可以将键与 CoreData 存储中对象的 objectID 相关联。

关于iPhone核心数据获取主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com