早上好,
我有一个父实体,我们称之为邻居,它在逻辑上拥有子实体,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 = true
和has_completed_build = false
的子房屋数量?我不认为我甚至可以通过关系链接这两个实体,因为这种关系是由ios外部的键定义的。这可以通过获取的属性进行管理吗?
现在我正在遍历每个社区,并在House.neighborhood_id = Neighborhood.id
之前查询每一行的孩子数。
提前致谢。
答案 0 :(得分:0)
根据评论,您可以执行按neighborhood_id
和has_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技能不能找到一种有效的方法来从这个结构中查找值(有效地进行连接)。我会考虑更多,但希望这能让你在同一时间开始。