我發現一個NSFetchRequest正在爲計數和執行返回不同的結果。countForFetchRequest和executeFetchRequest返回不同數量的結果
我有一個Product實體和一個Size實體。產品有很多尺寸。
我有兩個產品productA和productB。 ProductA僅適用於size1,productB適用於size1和size2。
鑑於NSPredicate
「ANY sizes.#size IN {"size1", "size2"}
」
我發現它爲countForfetchRequest
返回3但2項的數組當我執行該找取請求。
計數值是不正確的。 ProductB具有兩種尺寸,似乎在countForfetchRequest
中被計數兩次,但顯然只有executeFetchRequest
呼叫返回一次。
我試過設置setReturnsDistinctResults:YES
沒有效果。
難道你在進行計數呼叫時有一個髒的管理對象上下文?即在上下文中有一個臨時對象可能會拋出計數,或者這兩個調用是否緊接着返回? – ImHuntingWabbits 2010-11-04 07:11:05
在相同的託管環境下背靠背。而且錯誤是完全可重複的,所以上下文不會被任何其他線程錯誤地使用等。我喜歡這個想法。我沒有想到這一點! – deanWombourne 2010-11-04 11:54:23
這很有趣,我認爲它唯一能做的就是將每個對象與數組中的n個值匹配n次。因此,您有2個對象,但有3個匹配的實際#大小。我認爲通過將您的大小關係更改爲單個實體並檢查計數結果可以很容易地進行驗證。 – ImHuntingWabbits 2010-11-04 16:59:08