在iOS

时间:2015-12-04 17:07:40

标签: ios azure core-data azure-mobile-services

我在我的应用中使用Azure移动服务进行离线同步。我正在同步我的CoreData中的多个表,它们之间有关系ID。

我想通过在CoreData上使用Azure Mobile Service与多个表进行连接来了解是否有解决方案。

也许我错过了什么,但我不知道如何在Core Data中使用Azure Mobile服务建立关系

我的情况是我有一个可以有多个类别的对象。这些对象中的许多对象可以具有相同的类别并且具有许多类别。

假设我有三个表:Category,Category_Object和Object

我希望获得包含特定类别的所有对象。

感谢。

更新

目前,在有人发现有一天Mobile Services SDK可以在Core Data中创建关系之前,这是公认的答案

1 个答案:

答案 0 :(得分:0)

我假设Azure移动服务CategoryObject表分别具有唯一ID,分别为categoryIDobjectID,以及Category_Object表还有一个唯一ID,例如linkID加上categoryIDobjectID的列。

鉴于该设置,我将在CoreData中创建三个实体:CategoryObjectCategory_Object,并为它们提供与Azure Mobile Services表匹配的属性。然后定义它们之间的关系:

  • 类别与Category_Object有多对多的关系,比如objects,与一对一的反向category

  • 同样,Object与Category_Object有多对多的关系,比如categories,与一对一的反向object

首先将CategoryObject表与CoreData同步,然后同步Category_Object表。使用该表中的categoryIDobjectID列来获取正确的CategoryObject。然后填充关系:

newCategory_Object.category = fetchedCategory
newCategory_Object.object = fetchedObject
newCategory_Object.linkID = linkIDfromTable

从那时起,在您的应用中,您可以使用关系来确定哪些Object属于哪个Category;无需担心加入表格。

请注意,如果Category_Object表没有categoryIDobjectID以外的列,那么从理论上讲,您可以省去CoreData中的Category_Object实体,并且只需要很多关系直接从CategoryObject。但我认为这将使同步变得更加复杂。