2013-05-20 178 views
1

我目前正在構建一個核心數據應用程序,我碰到了一個障礙。我想這裏的架構上的一些上下文:核心數據混淆檢索記錄

該應用程序是跟蹤治療師與她的客戶的會話。所以模式是這樣組織的:有一張客戶表,客戶有會話,會話有活動,活動有指標。在應用程序中,這些指標轉化爲簡單的計數器,計時器和NSSliders。

問題的關鍵在於客戶希望能夠將以前制定的活動插入到新客戶的新會話中。所以,我試着只做一個簡單的獲取請求,然後轉移到NSFetchedResultsController。我一直遇到這樣的問題,即由於核心數據是一個對象圖,我得到了大量實際上具有相同數據的活動條目。唯一的差異化財產將是無論會議是什麼(如果你想更進一步,客戶本身)。

我不確定這是我需要在模式本身中進行更改還是在Core Data中可以執行某種解決方法。我已經嘗試通過使用結果類型NSDictionaryResultType來使用NSFetchedResultsController執行不同的讀取結果。它完成我想要的東西,但我只獲取實體的相關屬性,而不是與它關聯的任何子實體(我需要這些度量,你會看到)。

任何幫助表示讚賞,如果需要,我可以發佈代碼,即使我沒有真正具體的編碼錯誤。

回答

1

我沒有看到問題。如果您使用Client,Session,ActivityMetric實體對事物進行建模,每個實體與其右側的實體具有多對多關係,並與其左側的實體具有一對多對立關係(順序爲I列出實體),沒有什麼能阻止你將一個特定的活動添加到另一個客戶端的會話中,是嗎?

也許我誤解了這個問題。

+0

我的東西完全按照這種方式建模,我同意我不認爲應該有什麼阻止我。也許我的問題是「這是怎麼回事」? NSFetchedResultsController給了我不同的結果。 – jason328

+0

@ jason328也許你需要編寫代碼才能獲得所需的確切Activity對象。你可以使用'NSFetchRequest'和'NSPredicate'來實現,如下所述:http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/Articles/cdFetching.html#//apple_ref/ doc/uid/TP40002484-SW1然後,您可以將該對象添加到所需的Session對象。 – 7cows

+0

@ 7cows3,謝謝! – jason328

1

只需使用一個簡單的NSFetchRequest並設置您正在查找的謂詞。如果您獲得的結果太多,您可以設置獲取限制,但是您的問題聽起來不像IMO的問題。

我相信你正在尋找的是一個NSPredicate來縮小你的結果。一旦你獲取一個特定的對象,你可以用點符號方便地爲該對象分配任何關係或屬性,然後保存上下文。