Ios 核心数据获取仅限于关系中的对象

Ios 核心数据获取仅限于关系中的对象,ios,core-data,nspredicate,nsfetchrequest,Ios,Core Data,Nspredicate,Nsfetchrequest,鉴于以下核心数据模型: EntityA <--->> EntityB <--->> EntityC 返回正确的值。但是,如果从4个实体中选择1个,这不是太过分了吗?如果您使用有序关系,那么您可以直接获得相应的对象。如果不是,那么您需要使用谓词(尽管您可以在关系(如果小计数)或MOC(如果大计数)上运行它).我在有序关系方面有过不好的经验。重新排列容易出错,而且您没有NSSet或NSArray的许多优点,因为NSOrderedSet都不是从这两种关系派生出来的

鉴于以下核心数据模型:

EntityA <--->> EntityB <--->> EntityC

返回正确的值。但是,如果从4个实体中选择1个,这不是太过分了吗?

如果您使用有序关系,那么您可以直接获得相应的对象。如果不是,那么您需要使用谓词(尽管您可以在关系(如果小计数)或MOC(如果大计数)上运行它).

我在有序关系方面有过不好的经验。重新排列容易出错,而且您没有
NSSet
NSArray
的许多优点,因为
NSOrderedSet
都不是从这两种关系派生出来的


相反,在
EntityC
中添加一个
position
属性。在我看来,这是最直接的方法。不,在我看来,即使有几个实例,这也不过分。现在你可以很容易地对关系实体进行排序和识别。

当然你已经有了它们的关系内容来设置初始滑块了值?很好的问题。但在这种情况下,我需要初始值始终是默认值(0到100范围内为50)。关系是否有序?否…是否可以根据目标实体的属性进行排序?(从EntityB,EntityC是基于EntityC的属性排序的?)在创建/添加关系时设置顺序(所以你可以选择).如果我不打算重新安排,您的警告是否仍然有效?现在看来这是最好的主意…我将实施此解决方案并让您知道。谢谢!您的回答确实有效。因此我将接受它。但仅供参考,我遇到了。解决方法可行,但我可能会重构并尝试其他方法…这是我推荐的原因之一。
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityC" inManagedObjectContext:self.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"entityB == %@ AND rank == <#some number#>", self.entityB];