0

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

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

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

例如:如何只获取第一个和第三个插入数据来检查他的工作(如下所示,我想找到第一个 Sue 的工作和第三个 Ken 的工作,其他我不关心)

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

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

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

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

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

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

谢谢~</p>

4

1 回答 1

0

使用获取请求偏移属性:

[request setFetchOffset:3]

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

[request setFetchLimit:1]

编辑:(问题细化后)

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

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

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

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

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

于 2013-09-22T17:18:39.163 回答