Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone核心数据获取主键_Iphone_Core Data_Primary Key - Fatal编程技术网

iPhone核心数据获取主键

iPhone核心数据获取主键,iphone,core-data,primary-key,Iphone,Core Data,Primary Key,我正在开发一个使用CoreData的应用程序 因此,在.sqlite文件中,它管理主键本身 主键属性名称为Z_PK 我的问题是,我希望表中的数据按主键升序排序 我在用那个密码 NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"_PK" ascending:YES]; [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; [sort rele

我正在开发一个使用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。您无法控制唯一主键,因此无法控制其值。它仅仅是一个实现细节,不应以任何理由引用

因此,为什么要基于它进行排序?我能想到几个原因

  • 您希望按照对象添加到数据库的顺序访问这些对象。但是,您可以通过几种方式轻松地做到这一点
  • 1a。可以向每个实体添加一个字段。您可以将其设置为UUID或递增整数

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

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

    这两种解决方案中的任何一种都使您能够按添加的顺序访问实体对象

  • 或者,你真的不在乎你看到它们的顺序,但是你想要一个一致的顺序
  • 2a。添加primaryKey属性,并为其分配UUID

    2b。使用有序对多关系


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

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

    因此,为什么要基于它进行排序?我能想到几个原因

  • 您希望按照对象添加到数据库的顺序访问这些对象。但是,您可以通过几种方式轻松地做到这一点
  • 1a。可以向每个实体添加一个字段。您可以将其设置为UUID或递增整数

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

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

    这两种解决方案中的任何一种都使您能够按添加的顺序访问实体对象

  • 或者,你真的不在乎你看到它们的顺序,但是你想要一个一致的顺序
  • 2a。添加primaryKey属性,并为其分配UUID

    2b。使用有序对多关系


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

    您可以发布一个图像或Xcdatanodel吗,因为您的问题有点不清楚?核心数据中的主键?您好,Nikita,我正在将.Sqlite文件写入文档目录。在该文件中,当我添加一些记录时,然后表为所有记录创建主键..我只需要使用这个主键对我的数据进行排序。Oops。我认为您不能在documents目录中使用那个SQLite文件。供核心数据内部使用。您是否正确引用了核心数据文档?您是否可以发布一个图像或Xcdatanodel,因为您的问题有点不清楚?核心数据中的主键?你好,Nikita,我正在将.Sqlite文件写入文档目录。在该文件中,当我添加一些记录时,然后表为所有记录创建主键..我只需要使用这个主键对我的数据进行排序。Oops。我认为您不能在documents目录中使用那个SQLite文件。供核心数据内部使用。您是否正确参考了核心数据文档?谢谢您,Jody,我有一个alter net解决方案。但我只是想知道这有没有可能?谢谢你的帮助。谢谢你,乔迪,我有一个新的解决方案。但我只是想知道这有没有可能?谢谢你的帮助。