2013-08-21 89 views
1

三個實體在CoreData:CoreData:通過關係訪問對象

  • User
  • EntityA
  • EntityB

關係:

  • EntityAUser &逆一個一對多的關係
  • EntityA有一個一對一的關係與EntityB &逆
  • User & EntityB沒有關係

對象創建:

  • UserA創建Ty的objectA pe EntityA列表UserB和UserC作爲關係對象。
  • UserA也創造EntityBObjectB,上市ObjectA,因爲它關係對象

訪問對象

  • UserB日誌中和EntityA獲取成功下載ObjectA

問題:請問UserB能訪問ObjectB?如果是這樣,可以UserB訪問對象B用下面的代碼:NSString *value = [ObjectA.OneToOneRelationshipBetweenEntityAandB valueForkey"@attributeFromObjectB"];

如果沒有,怎麼能UserB訪問ObjectB?我需要建立什麼樣的關係?

我以前曾問過類似的問題,但我想我提供了太多的信息,並且讓它感到困惑。我刪除了這個問題,並希望將其簡化爲這一個。

謝謝。

+0

你說的「用戶A創建了......」或「用戶B登錄在......」是什麼意思?每個登錄用戶有單獨的數據庫(持久性存儲)嗎? - 你試過了嗎?你有沒有遇到任何問題? –

回答

2

假設一個統一的核心數據模型,只要存在關係,就可以輕鬆訪問對象。

出於可讀性的目的,我將重新定義你的變量/關係名稱:

User <<-----> Group <<-----> Community 

社區有許多羣體擁有衆多用戶。這很簡單,看起來像一個可行的設置。

澄清:用戶不能創建對象。只有一個程序可以做到這一點。

Group *newGroup = [NSEntityDescription 
     insertNewinsertNewObjectForEntityForName:@Group" 
     inManagedObjectContext:self.managedObjectContext]; 

Community *newCommunity = [NSEntityDescription 
     insertNewinsertNewObjectForEntityForName:@Community" 
     inManagedObjectContext:self.managedObjectContext]; 


userA.group = newGroup; 
userB.group = newGroup; 
newGroup.community = newCommunity; 

現在UserA和用戶B都屬於新聞組和組是在newCommunity的羣體之一。用戶B連接到組,所以它是很容易訪問社區:

Community *aCommunity = userB.group.community;