Fetched Property和多个ManagedObjectContext

时间:2011-08-03 07:49:31

标签: iphone cocoa-touch core-data nsmanagedobjectcontext

由于几个原因,我必须创建2个ManagedObjectContext,每个ManagedObjectContext都有一个不同的NSPersistentStoreCoordinator(一个是NSSqlLiteType,其他是NSInMemoryType)。 SQLLite数据库的某些对象必须访问InMemory数据库中的对象。我在Apple文档中找到了一种使用获取的属性使其工作的方法(所以他们说,看看这里的“跨店关系”段落:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html)。 问题是,当执行谓词时,我得到符合KVC的错误:

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[valueForUndefinedKey:]:此类不是密钥站编码兼容的密钥值。'

这是模型。 我有一个存储在SQL Lite数据库中的ManagedStation对象。我有一个存储在内存中的ManagedPassingTime对象。 ManagedStation应该有一个NSSet of ManagedPassingTimes。为此,我向ManagedPassingTime添加了一个stationId属性。加载工作站时,我创建所需的ManagedPassingTime对象,并将ManagedPassingTime的stationId设置为ManagedStation.identifier属性。最后,我在ManagedStation对象中创建了一个fetched属性“passingTimes”,它具有以下谓词:$ FETCH_SOURCE.identifier MATCHES $ FETCHED_PROPERTY.stationId。 fetched属性将ManagedPassingTime对象设置为Destination。

由于stationId是ManagedPassingTime的一个属性,我不明白为什么使用KVC无法访问该值。我甚至试图在ManagedPassingTime中覆盖valueForUndefiniedKey:(NSString *)键方法,但似乎我从未输入过这种方法。

如果你们中的任何人都有最微小的想法,那将是最有帮助的。 感谢。

1 个答案:

答案 0 :(得分:1)

我昨天碰到了这个,我开始工作的方式实际上是在离开$ FETCHED_PROPERTY。

所以在你的情况下试试

$FETCH_SOURCE.identifier MATCHES stationId

似乎你不需要在xcode 4中使用$ FETCHED_PROPERTY,也许它假定任何未指定的objets都在fetched属性上。如果他们更新xcode4的文档会很好。