我遇到核心數據生成的查詢中的SQL錯誤。這裏的數據模型:核心數據SUBQUERY與鍵路徑集合導致SQL錯誤
我想所有的驅動,其總線具有積極的乘客。這簡直是通過下面的讀取請求和謂語,其工作描述:
NSFetchRequest(entityName: "Driver")
NSPredicate(format: "ANY bus.passengers.active == YES")
但是,讓我們說我想要做的乘客更復雜的查詢,像他們主動和大於100的平衡做這樣的查詢,我不得不使用SUBQUERY
,像這樣:
NSPredicate(format: "SUBQUERY(bus.passengers, $passenger, $passenger.active == YES
AND $passenger.balance > 100)[email protected] > 0")
我希望SUBQUERY
接受keypathed集合作爲其第一個參數。它生成以下SQL查詢:
SELECT 0,
t0.z_pk,
t0.z_opt,
t0.zbus
FROM zdriver t0
WHERE (SELECT Count(t2.z_3passengers)
FROM zbus t1
JOIN z_1passengers t2
ON t1.z_pk = t2.z_1busses
WHERE (t0.zbus = t1.z_pk
AND ((t2.zactive = ?
AND t2.zbalance > ?)))) > ?
而錯誤:'no such column: t2.ZACTIVE'
。看起來它在ZPASSENGER
表中缺少JOIN
。
這是一個核心數據錯誤還是有不同的方式來編寫這個謂詞?
更新:Here's a sample project重現此問題。
不知道爲什麼這不起作用,但您可以嘗試提取「總線」實體,縮短關鍵路徑。請讓我們知道這是否有效。 – Mundi
在我看來,就像一個*限制*,而不是一個錯誤。 – Mundi
我認爲沒有什麼比@ Mundi在'Bus'上提取的建議更好。我會向Apple提交一份關於此問題的錯誤報告,因爲即使這是一個限制,也應該修復。 –