gpt4 book ai didi

ios - 核心数据+iCloud :iCloud Storage only increase not decrease

转载 作者:行者123 更新时间:2023-11-29 01:22:32 24 4
gpt4 key购买 nike

我正在用iCloud+核心数据解析写一个日记应用程序。在我开发的时候。我发现即使我尝试在我的应用程序中删除我的日记,iCloud 存储空间只会增加。我使用一对多。一个是日记(标题,内容,...),许多是照片。起初,我用一些照片创建了一些日记,然后我删除了一些照片。但是iCloud存储空间只会增加,不会减少...知道这个问题后,我尝试关闭iCloud,将上下文切换到本地Core Date Store,我发现它没有我上面描述的问题。我不知道为什么会发生这种情况。请帮我。谢谢。

这是核心数据模型 enter image description here

这是删除 iCloud Store 中的照片时 Core Data 的 SQL 输出。

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

最佳答案

Core Data 没有 iCloud 的工作方式如您所料。当您添加数据时,持久存储会变大,而当您删除数据时,它会变小。

Core Data with iCloud 通过创建基线数据存储然后添加修改基线的事务日志来工作。当您添加数据时,会有一个新的事务表明要添加数据。当你删除数据时,会有一个新的事务说要删除数据。但是事务实际上并没有删除数据——它只是说应该删除数据,这样当重放事务时,数据就被删除了。

在某些时候,Core Data 应该将所有事务压缩到一个新的基线中。删除的数据将在那时被删除。但是,Apple 没有记录这种情况何时发生,我不确定它是否真的发生过。

这就是为什么您会看到不同的结果,具体取决于是否为 Core Data 启用了 iCloud。

关于ios - 核心数据+iCloud :iCloud Storage only increase not decrease,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34427170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com