【问题标题】:How to fetch CoreData value specified? [closed]如何获取指定的 CoreData 值? [关闭]
【发布时间】:2013-09-22 16:04:11
【问题描述】:

我用三个属性“name”“sex”“job”设置了一个CoreData实体

我在其中存储了 5 个数据,并想用它们来比较他们的工作。 (每个数据包含“姓名”“性别”“工作”)

我知道如何按顺序获取它们(按插入时间排序),但我不知道如何只获取其中一个?

ex:如何只获取第一个和第三个插入数据来检查他的工作 (像下面这样,我想找第一个Sue的工作和第三个Ken的工作,其他的我不关心)

============================

姓名:苏/鲍勃/肯/莉莉/约翰

性别:W / M / M / W / M

工作:经理/职员/职员/职员/助理经理

===========================================

请给我一些建议或示例代码~

谢谢~

【问题讨论】:

  • 按什么排序?为什么你只想获取第三个项目?听起来您可能错误地解决了这个问题,请尝试解释更多有关您正在尝试做的事情。
  • 什么标准会产生您希望获得的数据? (不能只说第三个数据!)
  • 很抱歉我的英语不好,我试着清楚地解释我的问题。

标签: xcode core-data nsfetchedresultscontroller


【解决方案1】:

使用获取请求偏移属性:

[request setFetchOffset:3]

要使其成为唯一返回的对象,请添加:

[request setFetchLimit:1]

编辑:(问题细化后)

您不能通过索引访问多个对象的数据(除非它们按照您定义的顺序是连续的)。

您需要一种方法(键)来仅识别您需要的对象(如果您的 name 属性是唯一的/键,您可以在这种情况下使用它)。您始终可以使用托管对象 ID 来唯一标识托管对象

如果您有感兴趣的对象的对象 ID,则只需使用如下谓词获取它们:[NSPredicate predicateWithFormat:@"SELF IN %@",objectIDs]
如果您通过另一个键标识您的对象,请定义一个谓词,该谓词将仅获取您这些项目,例如:
[NSPredicate predicateWithFormat:@"name IN %@",@[@"Sue",@"Ken"]]
您可以添加一个属性来标记您需要的对象(BOOL 属性)并用它定义您的谓词。

如果您有少量对象,那么获取所有对象并选择您需要的对象并没有真正的问题。如果您有很多对象,通过索引而不是键访问它们可能不是要走的路。

如果您需要访问这些项目,因为用户选择了它们,而不是保存它们的索引,而是保存它们的对象 ID 并通过它访问它们。

【讨论】:

  • 好的!明白了,谢谢~
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多