在app删除时没有清理iCloud ubiquity容器?

时间:2013-01-22 12:46:20

标签: ios core-data icloud

我正在将iCloud与Core Data一起添加到应用商店中已存在的应用中,因此我需要测试升级方案。但是,当我从我的设备中删除我的应用程序并从Xcode重新安装它时,我注意到设备上我的ubiquity容器文件夹中的所有内容都是持久的!这非常令人讨厌,因为当我尝试从我指定的事务日志目录上传文件时iCloud最终会感到困惑,并且经常超时。我最终需要指定一个新的事务日志位置才能让它再次工作,这对我的测试显然不会起作用。

以下是我收到的错误:

  

PFUbiquitySafeSaveFile waitForFileToUpload :: CoreData:   无处不在:(0)permanentLocation:   :/ private / var / mobile / Library / Mobile   文档/ XXXXXXXXXX〜appnamegoeshere / DatabaseTransactionLogs / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20 / iCloudData / 8u0BfiCwOkHHa〜o8hF4bunW〜zmdS_C8om5efuugxRaA = / receipt.0.cdt     safeLocation ::   /私营/无功/移动/图书馆/手机   文档/ XXXXXXXXXX〜appnamegoeshere / DatabaseTransactionLogs / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20 / iCloudData / 8u0BfiCwOkHHa〜o8hF4bunW〜zmdS_C8om5efuugxRaA = / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20.0.cdt     当前位置: :   /私营/无功/移动/图书馆/手机   文档/ XXXXXXXXXX〜appnamegoeshere / DatabaseTransactionLogs / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20 / iCloudData / 8u0BfiCwOkHHa〜o8hF4bunW〜zmdS_C8om5efuugxRaA = / mobile.8A0C3F8A-4077-57D7-8250-6BE15D1BCD20.0.cdt

     

kv:(null)

     

安全保存文件失败,错误:错误Domain = NSCocoaErrorDomain   代码= 512“文件上传超时。”的UserInfo = 0x1e5b6b10   {NSLocalizedDescription =文件上传已超时。}

有没有人知道如何在app安装之间清除无处不在的容器?即使从应用程序设置中删除ubiquity容器并重新发布它也无法解决此问题。理论上的客户只需删除应用程序然后删除它们的iCloud文件就可以解决这个问题。这个问题确定问题的原因是非常令人沮丧的 - 任何建议都值得赞赏!

2 个答案:

答案 0 :(得分:7)

经过多次冲击,我能够想到这一点。有人向我提到,如果您访问developer.icloud.com并使用您的iCloud帐户登录,则可以查看设备的所有iCloud数据。用这个做了一些测试,当我告诉它从我的设备中删除时,我能够看到iCloud服务器上的数据被立即删除。但是,即使我删除了我的应用程序,我在设备上的ubiquity容器中创建的所有文件夹和文件仍然存在。

我的工作是在第一次设置我的应用程序时检查是否使用iCloud,看看我的目录是否已经在普遍容器中。如果是,那么我使用以下代码手动删除目录及其中的所有文件:

 [fileManager removeItemAtPath:[[fileManager URLForUbiquityContainerIdentifier:nil] path] error:&error];

答案 1 :(得分:2)

这就是iCloud的工作方式。在一台设备上删除应用程序不会自动删除iCloud数据。如果应用程序仍安装在使用同一帐户的其他设备上,则他们仍可以使用该数据。

如果您想在测试期间清除iCloud数据,请转到设置 - > iCloud,深入到您的应用程序,并删除数据。