iOS MagicalRecord:加入
Posted
技术标签:
【中文标题】iOS MagicalRecord:加入【英文标题】:iOS MagicalRecord: Join 【发布时间】:2013-11-23 21:34:20 【问题描述】:我想从 B.ID = A.ID (JOIN A/B) 的表 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 上没有这个属性。有没有更好的方法来连接两个表?还是我使用我的第一种方法?
【问题讨论】:
【参考方案1】:您可以在获取请求中只传递对象 id 而不是托管对象:
[NSPredicate predicateWithFormat:@"a == %@", a.objectID];
和
完全一样[NSPredicate predicateWithFormat:@"a == %@", a];
如果你已经有了“A”对象,那么如果
您将a
或a.objectID
传递给获取请求。
【讨论】:
以上是关于iOS MagicalRecord:加入的主要内容,如果未能解决你的问题,请参考以下文章
Magical Record 不会保存到 SQLite 文件
ios Magical Record 保存在 UIApplicationWillTerminateNotification
ios Magical Record保存在UIApplicationWillTerminateNotification上