2015-12-23 27 views
0

我正在用iCloud + Core數據分辨率編寫日記應用程序。我發現iCloud存儲只會增加,即使我嘗試刪除我的應用程序中的日記。我使用一對多。一個是日記(標題,內容......),其中很多是照片。起初,我創建了一些照片的日記,然後我刪除了一些照片。但iCloud存儲只是增加,而不是減少... 知道這個問題後,我嘗試關閉iCloud,將上下文切換到本地Core Date Store,但發現它沒有我上面描述的問題。 我不知道爲什麼會發生這種情況。請幫幫我。謝謝。核心數據+ iCloud:iCloud存儲只增加不減

這裏是核心數據模型 enter image description here

這是核心數據的SQL的輸出,當我刪除iCloud中存儲的照片。

2015-12-23 09:10:27.991 LPDiary[749:215074] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZCONTENT, t0.ZDIARYID, t0.ZLOCATION, t0.ZNOTEPAPERNAME, t0.ZRESERVEBINARYDATA1, t0.ZRESERVEBINARYDATA2, t0.ZRESERVEDATE1, t0.ZRESERVEDATE2, t0.ZRESERVESTR1, t0.ZRESERVESTR2, t0.ZTYPE, t0.ZWEATHER, t0.ZWRITEDATE FROM ZLCLDIARY t0 WHERE t0.ZDIARYID = ? ORDER BY t0.ZWRITEDATE DESC 
2015-12-23 09:10:27.992 LPDiary[749:215074] CoreData: annotation: sql connection fetch time: 0.0009s 
2015-12-23 09:10:27.992 LPDiary[749:215074] CoreData: annotation: total fetch execution time: 0.0013s for 1 rows. 
2015-12-23 09:10:27.995 LPDiary[749:215074] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZIMAGEDATA, t0.ZORDER, t0.ZRESERVESTR1, t0.ZOWNER, t0.Z1PHOTOS FROM ZLCLPHOTO t0 WHERE t0.Z_PK IN (?) 
2015-12-23 09:10:27.997 LPDiary[749:215074] CoreData: annotation: sql connection fetch time: 0.0017s 
2015-12-23 09:10:27.997 LPDiary[749:215074] CoreData: annotation: total fetch execution time: 0.0026s for 1 rows. 
2015-12-23 09:10:28.000 LPDiary[749:215074] CoreData: sql: BEGIN EXCLUSIVE 
2015-12-23 09:10:28.000 LPDiary[749:215074] CoreData: sql: DELETE FROM ZLCLPHOTO WHERE Z_PK = ? AND Z_OPT = ? 
2015-12-23 09:10:28.007 LPDiary[749:215074] CoreData: sql: UPDATE ZLCLDIARY SET Z_OPT = ? WHERE Z_PK = ? AND Z_OPT = ? 
2015-12-23 09:10:28.008 LPDiary[749:215074] CoreData: sql: UPDATE Y_UBMETA set YPEERID="mobile~5C6B0588-0876-42C4-88CA-2FC85745ED66", YTRANSACTIONNUMBER=30 WHERE YPEERID="mobile~5C6B0588-0876-42C4-88CA-2FC85745ED66" 
2015-12-23 09:10:28.046 LPDiary[749:215074] CoreData: sql: COMMIT 
2015-12-23 09:10:28.061 LPDiary[749:215074] CoreData: sql: select YPEERID, YTRANSACTIONNUMBER, Y_PK from Y_UBMETA 

回答

1

核心數據沒有 iCloud的工作正如您所料。當您添加數據時,持久存儲會變大,而當您刪除數據時,它會變得更小。

使用iCloud的核心數據通過創建基準數據存儲,然後添加修改基準的事務日誌來工作。當你添加數據時,有一個新的事務說要添加數據。當你刪除數據時,有一個新的事務表示刪除數據。但事務並不實際刪除數據 - 它只是說應刪除數據,以便重放事務時,數據將被刪除。

在某些時候,核心數據應該將所有事務壓縮到一個新的基線。此時刪除的數據將被刪除。但是,蘋果公司並沒有記錄這種情況發生的時間,我不確定它是否會發生。

這就是爲什麼你會看到不同的結果,這取決於是否爲Core Data啓用了iCloud。

+0

那麼有沒有解決方案來解決這個問題? – Destiny

+0

這是否意味着這是iCloud的bug,存儲永遠不會免費? – Destiny

+0

我不知道解決方法。你應該向Apple提交一個關於這個問題的錯誤。 –