2015-12-23 2 views
0

Я пишу дневник приложения с разрешением iCloud + Core. Во время моего развития. Я обнаружил, что iCloud Storage увеличивается даже в попытке удалить мой дневник в моем приложении. Я использую один для многих. один - это дневник (название, содержание, ...), а многие - это фотографии. Сначала я создаю несколько дневников с фотографией, затем удаляю несколько фотографий. но хранилище iCloud просто увеличивается, а не уменьшается ... Узнав об этом, я пытаюсь отключить iCloud, переключить контекст на локальный хранилище Core Date Store, я обнаружил, что он не имеет описанного выше уровня. Я не знаю, почему это произойдет. Пожалуйста, помогите мне. Спасибо.Основные данные + iCloud: iCloud Хранение только увеличивается не уменьшается

Вот основные модели enter image description here

данных Вот вывод SQL основных данных, когда я удалить фотографию в ICloud Store.

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 предполагается сконденсировать все транзакции в новую базовую линию. Удаленные данные будут удалены в этот момент. Однако Apple не документирует, когда это происходит, и я не уверен, что это когда-либо произойдет.

Вот почему вы видите разные результаты в зависимости от того, включена ли iCloud для Core Data.

+0

Итак, нет решения для решения этой проблемы? – Destiny

+0

Означает ли это, что это ошибка iCloud, и хранилище никогда не будет бесплатным? – Destiny

+0

Я не знаю об обходном пути. Вы должны сообщить об этом Apple. –

Смежные вопросы