CoreData - 获取 NSManagedObject 的关系子集

Posted

技术标签:

【中文标题】CoreData - 获取 NSManagedObject 的关系子集【英文标题】:CoreData - Getting a NSManagedObject's relationship subset 【发布时间】:2014-07-17 07:46:30 【问题描述】:

菜鸟问题传入(非常简单但在任何地方都找不到答案):

我有一个实体

MY_ENT *my_ent = initialized elsewhere;

这个实体有一个称为my_rel的一对多关系

NSLog(@"Relations: %lu", my_ent.my_rel.count);

关系:15

我想得到它的一个子集,其中字段my_field 等于@"xx"

我尝试循环填充 NSArray 的关系,但没有运气(指针似乎已解除​​分配)。

NSMutableArray *my_rels;
for (MY_REL *my_rel in my_ent.my_rel) 
    if ([my_rel.my_field isEqualToString:@"xx"]) 
        [my_rels addObject:my_rel];
    

也许我应该使用谓词,但我不明白如何在这里使用。

【问题讨论】:

【参考方案1】:

是的,使用谓词更容易。你可以这样做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"my_field = %@", x];
NSSet *subset = [my_ent.my_rels filteredSetUsingPredicate:predicate];

【讨论】:

以上是关于CoreData - 获取 NSManagedObject 的关系子集的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将可转换属性保存到 Core Data

对象之间的核心数据关系

创建 NSManagedObject 派生类的问题

[NSManagedObjectContext 保存:] 上 NSManagedObjectMergeError 错误的原因

如何在magicrecord中指定合并策略

将部分核心数据保存到云端