在我的集合视图中,我需要为每个项目生成索引。由于物品重新排序,我需要此索引以使用新位置更新。

数据是托管NSArrayController中的核心数据实体。 我最接近的解决方案正在实体类上在实体类上实现此方法,然后使用 tabledobject.dynamicindex 将其绑定到UI。

- (NSNumber *) dynamicIndex
{
    NSInteger r = [[[[self managedObjectContext] registeredObjects] allObjects] indexOfObject:self];
    NSNumber *result = [NSNumber numberWithInt:r];
    return result;
}
.

此解决方案最佳粗略,而且没有实际运行,因为它不一定反映了收集视图中的顺序。

任何人都有一个模型/机制,用于在NSCollectionView中生成或检索项目索引?

有帮助吗?

解决方案

首先,确保您了解(并正确使用)“实体”和“实例”之间的差异。它使您与他人的问题/解决方案传达所有差异。

第二:不要担心nscollectionViewitems ......担心每个人的“代表对象”,它在一些容器中举行。

第三:您是否希望显示命令成为实体的持久性属性,或者您只需要知道项目在此刻内的位置,无论它稍后可能是什么?重要问题。

第四:核心数据不会给您订购集合的概念。这是支持存储类型,例如NSSQLITEStoreType,在不加载整个列表的情况下,您可能只想在几个项目(或一个)中发生故障。因此,如果您想要一个持久的排序顺序,您是您自己的。为此,只需将属性添加到名为“sortorder”的实体,并使其成为数字类型。

fifth:由于上面的“无序集合”问题,您尝试从一组中建立的数组找到实体的给定实例的索引,这是用非etministic order的错误被注定为失败。

六:由于您使用的数组控制器,您需要设置其排序描述符。您需要使用“Sortorder”键。这样,您的获取实例将始终按其“sortorder”排序。

第七,最后:如果您尝试获取 arrower的 set / set / set / aremals的任何对象的索引,则您将需要向其询问其--ArrangedObjects,所以您'重新获取排序集合中的对象的索引阵列控制器控件。

希望有帮助。

狮子(10.7)

更新 关于我的第六点:如果您在应用程序中定位10.7及更高版本,[nsmanagedObject现在会为您提供订购的关系。] [1]使用-mutableOrderedsetValueForKey:和-mutableOrderedsetValueForKey:要设置和检索NSOrderedSets。 yay!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top