2011-08-03 40 views
1

擷取的屬性和多重ManagedObjectContext

有幾個原因,我要創建2 ManagedObjectContext,每一個具有不同的NSPersistentStoreCoordinator(一個是NSSqlLiteType,所述水淨化是一個NSInMemoryType)。 SQLLite數據庫的某些對象必須訪問InMemory數據庫中的對象。我在Apple文檔中找到了一種使用提取的屬性進行工作的方法(所以他們說,看看「Cross-Store Relationships」段落:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html)。 的事情是,在執行謂詞的時候,我得到一個KVC兼容的錯誤:

終止應用程序由於未捕獲的異常「NSUnknownKeyException」,原因:「[valueForUndefinedKey:]:此類不是密鑰值編碼兼容的關鍵站點「。

這是模型。 我有一個存儲在SQL Lite數據庫中的ManagedStation對象。我有一個存儲在內存中的ManagedPassingTime對象。 ManagedStation應該具有ManagedPassingTimes的NSSet。爲此,我在ManagedPassingTime中添加了一個stationId屬性。加載工作站時,創建所需的ManagedPassingTime對象,並將ManagedPassingTime的stationId設置爲ManagedStation.identifier屬性。最後,我在ManagedStation對象中創建了一個提取屬性「passingTimes」,它具有以下謂詞:$ FETCH_SOURCE.identifier MATCHES $ FETCHED_PROPERTY.stationId。獲取的屬性將ManagedPassingTime對象設置爲目標。

由於stationId是ManagedPassingTime的一個屬性,我不明白爲什麼使用KVC無法訪問該值。我甚至試圖覆蓋ManagedPassingTime中的valueForUndefiniedKey:(NSString *)鍵方法,但似乎我從來沒有輸入這個方法。

如果你們中的任何一個人有最小的想法,這將是最有幫助的。 謝謝。

回答

1

我昨天遇到了這個,我得到它的方式實際上是離開了$ FETCHED_PROPERTY。

所以你的情況嘗試

$FETCH_SOURCE.identifier MATCHES stationId

看來你不需要使用$ FETCHED_PROPERTY在Xcode 4,也許它假定任何未指定OBJETS上所取得的財產。如果他們更新xcode4的文檔,會很好。