Core data iOS 7 CoreData-FetchedProperty返回错误数组

Core data iOS 7 CoreData-FetchedProperty返回错误数组,core-data,ios7,fetched-property,Core Data,Ios7,Fetched Property,也许有人能告诉我我是否走对了路 我有两个实体: 具有以下属性的练习: 标题字符串;练习_id-int 具有以下属性的AddeXercise: 计数-整数;添加了\u练习\u id-int AddedExercise有一个获取的属性,名为link\u exercise,目标为:exercise and谓词:exercise\u id=$FETCH\u SOURCE.added\u exercise\u id 在我的代码中,我执行以下操作: for(AddedExercise *e in listO

也许有人能告诉我我是否走对了路

我有两个实体:

具有以下属性的练习: 标题字符串;练习_id-int

具有以下属性的AddeXercise: 计数-整数;添加了\u练习\u id-int

AddedExercise有一个获取的属性,名为link\u exercise,目标为:exercise and谓词:exercise\u id=$FETCH\u SOURCE.added\u exercise\u id

在我的代码中,我执行以下操作:

for(AddedExercise *e in listOfAddedEx){
            [moc refreshObject:e mergeChanges:YES];
            NSLog(@"%@", e.link_exercise);
        }
日志上写着:

()的关系错误、名称链接练习、等选项1、isTransient 1、实体AddedExercise、重命名标识符链接练习、验证谓词( ),警告( ),versionHashModifier(null) 用户信息{ },在0x1700d8b80上获取请求(实体:Exercise;谓词:(Exercise\u id=$FETCH\u SOURCE.添加了\u Exercise\u id);排序描述符:((null));类型:NSManagedObjectResultType;)

所以好像有什么东西在那里,表现在一个断层上。 但是如果我尝试访问“link_exercise”数组。例如: e、 link\u exercise.count或e.link\u exercise.lastObject

我将得到以下错误:

'NSUnknownKeyException',原因:'[valueForUndefinedKey:]:此类不符合添加的密钥练习id的键值编码。

也许有人有办法解决这个问题

非常感谢

S.R

----->更新1:

我现在将谓词更改为: SELF.exercise\u id=exercise\u id

现在我可以访问练习对象,但是我得到了一个错误的id,因为

SELF.exercise\u id=exercise\u id应该看起来像SELF.exercise\u id=添加的\u exercise\u id

使用谓词SELF.exercise\u id=添加了\u exercise\u id我得到以下错误:

'NSInvalidArgumentException',原因:'无法为谓词生成SQL(练习id==添加的练习id)(RHS上的问题)

----->更新2:

仍然无法理解为什么它不起作用

对我来说好像

SELF.exercise_id == $FETCH_SOURCE.added_exercise_id
应该是正确的谓词,但它不起作用。 也许其他人有一些建议

或者我应该自己创建一个获取请求(以编程方式)? 这意味着为所有“Exercise”设置一个获取请求,并返回Exercise\u id=added\u Exercise\u id的位置。这基本上就是我目前试图通过获取属性来解决的问题

----->更新3: 好的,我快拿到了!!我忘记提到的一件事是,我使用了一个多managedObjectContext核心数据堆栈(包括一个worker、main和master上下文)

我的所有请求都会转到工作上下文(在这种情况下,获取的正确值不起作用) 但是,如果我的所有请求都转到主上下文,则获取的属性将按预期工作

因此,它似乎只适用于具有持久存储的managedObjectContext


有人能给我解释一下,为什么这不能用于其他managedObjectContext吗?

也许可以尝试一些
类检查。好的。。。我更近了一步。使用以下谓词:“SELF.exercise\u id=exercise\u id”,不会发生异常。但是第二个“exercise\u id”应该是“added\u exercise\u id”,在RHS(右手侧)使用$FETCH\u SOURCE?然后这里会抛出:'NSUnknownKeyException',原因:'[valueForUndefinedKey::]:这个类不符合key-value编码,不符合key-added\u-exercise。我还认为$FETCH\u SOURCE是我的“AddedExercise”对象。但似乎不是…:-/
masterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
masterContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
[masterContext setPersistentStoreCoordinator: coordinator];

mainContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
mainContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
mainContext.parentContext = masterContext;

workerContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
workerContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;
workerContext.parentContext = mainContext;