iOS MagicalRecord:加入

iOS MagicalRecord:加入,ios,core-data,magicalrecord,Ios,Core Data,Magicalrecord,我想从表B中获取所有记录,其中B.ID=A.ID(加入A/B)。因此,我创建了一个使用谓词传递对象a的方法: -(NSArray*) getRecordFromB:(A*) a{ NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread]; NSPredicate *predicate1 = [NSPredicate predicateWithForm

我想从表B中获取所有记录,其中B.ID=A.ID(加入A/B)。因此,我创建了一个使用谓词传递对象a的方法:

-(NSArray*) getRecordFromB:(A*) a{
    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];    
    NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"a == %@", a];

    //Return notes from pin
    return [B MR_findAllWithPredicate:predicate1 inContext:localContext];
}
而且,它工作得非常好。但是,我认为这样更好(我想保留内存),所以我只将ObjectID传递给方法以进行连接。我将方法更改为:

-(NSArray*) getRecordFromB:(NSO*) a{
    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];    
    NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"a.objectID == %@", a];

    //Return notes from pin
    return [B MR_findAllWithPredicate:predicate1 inContext:localContext];
}

但是不起作用,因为我的模型A上没有这个属性。有没有更好的方法连接两个表?或者我使用我的第一种方法?

您只需在获取请求中传递对象id而不是托管对象:

[NSPredicate predicateWithFormat:@"a == %@", a.objectID];
与之完全相同

[NSPredicate predicateWithFormat:@"a == %@", a];
如果你已经有了“A”对象,如果 将
a
a.objectID
传递给获取请求