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