如何正确删除无处不在的内容?

时间:2014-08-06 14:50:53

标签: ios objective-c core-data icloud

我有一个iCloud-CoreData可同步应用程序。我现在的目标是实现数据擦除。 我正在使用

+ (BOOL)removeUbiquitousContentAndPersistentStoreAtURL:(NSURL *)storeURL 
                                               options:(NSDictionary *)options 
                                                 error:(NSError**)error 

它完美地工作,从所有对等方删除所有数据,但问题是我无法在删除内容后立即开始使用无处不在的容器。这意味着在

之后
+ (BOOL)removeUbiquitousContentAndPersistentStoreAtURL:(NSURL *)storeURL 
                                               options:(NSDictionary *)options 
                                                 error:(NSError**)error

完成后我初始化新的核心数据堆栈。但是,在这个新堆栈中创建的新对象都不会发送给其他对等体。同步不再有效了。

任何假设我做错了什么?

任何人都可以在removeUbiquitousContentAndPersistentStoreAtURL完成后立即告诉如何正确重新启动coredata堆栈吗?

更新

在我致电removeUbiquitousContentAndPersistentStoreAtURL之前,我正在使用[MagicalRecord cleanUp];清理核心数据堆栈,以便在删除时不会保留商店

1 个答案:

答案 0 :(得分:1)

我在Yosemite Mac应用和iOS8应用之间遇到了完全相同的问题。无论何时我从Mac应用程序中调用removeUbiquitousContentAndPersistentStoreAtURL,iOS应用程序都不会与重置的商店同步。我尝试删除iOS应用程序,在设置中清除该应用程序的iCloud存储,重新启动OS X应用程序,没有运气。

我可以让它重新同步的唯一方法:让iOS应用程序也调用'removeUbiquitousContentAndPersistentStoreAtURL'方法。在每台设备(Mac和iOS)上调用此方法并重新启动后,同步将再次开始工作。

步骤:

  1. 从Mac应用中重置商店
  2. 退出Mac应用
  3. 从iOS应用重置商店
  4. 退出iOS应用
  5. 重启iOS应用
  6. 重新启动Mac应用
  7. 之后两个应用都会正确同步。

    PS:由于这不是一个真正的答案,而是更多的解决方法,我可以将其添加为评论,但没有足够的分数。不过,它可能是有用的信息。