Ios 按属性值查找对象索引

Ios 按属性值查找对象索引,ios,core-data,nsfetchedresultscontroller,nsfetchrequest,Ios,Core Data,Nsfetchedresultscontroller,Nsfetchrequest,在ios6coredata上,我试图构建一个类似于slideshow的应用程序(按照特定的顺序逐个浏览数据库实体)。这非常简单,我甚至可以使用NSFetchedResultsController。现在,问题是,在某些情况下,我会得到一个实体,我需要“跳转”到那个实体,而不知道这个实体的索引 一种可能的解决方案是逐个循环实体。我只是想知道是否有其他方法可以获得这个实体的“索引”。下面是一个描述问题的伪代码: NSFETCH请求 已排序实体:所需实体类型,按上次更新日期排序 **需要按实体id或唯

在ios6coredata上,我试图构建一个类似于slideshow的应用程序(按照特定的顺序逐个浏览数据库实体)。这非常简单,我甚至可以使用NSFetchedResultsController。现在,问题是,在某些情况下,我会得到一个实体,我需要“跳转”到那个实体,而不知道这个实体的索引

一种可能的解决方案是逐个循环实体。我只是想知道是否有其他方法可以获得这个实体的“索引”。下面是一个描述问题的伪代码:

NSFETCH请求

  • 已排序实体:所需实体类型,按上次更新日期排序
  • **需要按实体id或唯一id查找上述实体列表中的索引
在SQL中,我将执行以下操作

select ROWINDEX
from (
   select ROWNUM as ROWINDEX, uid
   from entity_table
   order by lastupdatedate desc
)
where uid="abc"

谢谢。

我可能没有完全理解你。然而。FetchedResultsController有一个属性。FetchedObject是一个数组。我想你可以在这个阵营里四处走动,做任何你需要做的事情

你没有说明你想如何识别你所追求的实体;您当然可以按照建议使用暴力方法来查找您要查找的内容:

for (NSManagedObject *obj in fetchedResultsController.fetchedObjects)
{

}

如果结果集很小。如果结果集太大,无法有效地完成此操作,则可以尝试使用NSPredicate来过滤fetchedObjects数组,这可能是更好的选择。请参见位于

的链接,假设您有一个包含所有已排序对象的数组,您可以通过以下方式找到索引

NSArray *objects = ...//Sorted Array
NSPredicate *predicate  = [NSPredicate predicateWithFormat:@"uid=='abc'"];
NSUInteger index = [objects indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [predicate evaluateWithObject:obj];
}];

好啊谢谢规律的表达。那对我有用。因为我是CoreData新手,所以只想确保我没有错过任何东西。NSFetchedResultsController还有一个方法
indexPathForObject:
,在这里可能很有用。Martin,你说得对!我现在使用这种方法。我还没有测试过它。但这看起来正是我想要的。谢谢