iOS Swift核心数据计算子实体

时间:2015-04-10 12:58:40

标签: ios swift core-data

早上好,

我有一个父实体,我们称之为邻居,它在逻辑上拥有子实体,Houses。在我的核心数据模型中,这些实体没有通过关系链接(尚未)。另外,实体之间的实际关系由服务器端应用程序管理,该应用程序是外键关系和所有数据的记录系统。在下面的模式中,您会注意到有id和foreign_id属性。这些值由服务器提供。

邻居有以下架构:

id int32
name string

House有以下架构:

id int32
neighborhood_id int32
address string
has_completed_build boolean 

如果我在本地数据库中有5,000个社区,每个社区有20个房屋,我怎样才能有效地返回所有5,000个社区,并计算has_completed_build = truehas_completed_build = false的子房屋数量?我不认为我甚至可以通过关系链接这两个实体,因为这种关系是由ios外部的键定义的。这可以通过获取的属性进行管理吗?

现在我正在遍历每个社区,并在House.neighborhood_id = Neighborhood.id之前查询每一行的孩子数。

提前致谢。

1 个答案:

答案 0 :(得分:0)

根据评论,您可以执行按neighborhood_idhas_completed_build分组的获取以获取计数,然后单独获取以获取neighborhood_id的名称。像这样:

    let fetch = NSFetchRequest(entityName: "House")
    let countExpression = NSExpression(format: "count:(id)")
    let countED = NSExpressionDescription()
    countED.expression = countExpression
    countED.name = "countOfHouses"
    countED.expressionResultType = .DoubleAttributeType
    fetch.propertiesToFetch = ["neighborhood_id", "has_completed_build", countED]
    fetch.resultType = .DictionaryResultType
    fetch.propertiesToGroupBy = ["neighborhood_id", "has_completed_build"]
    let houseCounts = managedObjectContext?.executeFetchRequest(fetch, error: nil)

这将为您提供一系列字典,每个字典都有键“neighborhood_id”,“has_completed_build”和“countOfHouses”。我担心我的Swift技能不能找到一种有效的方法来从这个结构中查找值(有效地进行连接)。我会考虑更多,但希望这能让你在同一时间开始。