首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心数据和iCloud添加预填充的sqlite文件

核心数据和iCloud添加预填充的sqlite文件
EN

Stack Overflow用户
提问于 2012-04-13 11:59:41
回答 1查看 2.5K关注 0票数 1

我正在开发一个应用程序,它使用核心数据和iCloud在多个iPads之间同步数据。这一切都很好,我可以将数据添加到每个iPad中,并在它们之间进行同步。

我有一个核心数据sqlite文件,是预先填充的国家名单,我想复制这个文件区在第一次运行的应用程序。我已经做到了这一点,但我已经将我的persistentStoreCoordinator实现更改为测试是否支持iCloud以及其他一些小的更改。

但是,现在,当我检查sqlite文件是否存在时,如果没有复制预编好的sqlite文件,我会在

代码语言:javascript
复制
[psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:iCloudData] options:options error:&persistentStoreError];

addPersistentStoreWithType:configuration:URL:options:error::NSPersistentStoreCoordinator CoreData: Ubiquity: ubiquity : ubiquity integration: Error Domain=NSCocoaErrorDomain Code=134316:“泛存容器似乎与此持久存储不匹配,这可能是由于切换到不同的iCloud帐户,或者完全退出iCloud造成的。存储应该用只读属性重新打开,或者永久地从iCloud同步中删除。”{storeUUID=31381598-EAFA-4550-9B96-F501800974D5,containerUUID=E3A8DC7D-41FD-405A-8D8A-C06C8B467CA2,UserInfo=0x1cb590 NSLocalizedDescription=The ubiquity容器似乎与此持久存储不匹配,这可能是由于切换到不同的iCloud帐户,或完全退出iCloud造成的。存储应该用只读属性重新打开,或者从iCloud同步中永久删除。}

这是因为iCloud中仍然引用不同的核心数据、sqlite文件或事务日志文件吗?如果是这样的话,我将如何移除它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 12:10:47

您不应该将预先创建的Core数据存储复制到无处不在的容器中。这样做的旧方法是在模拟器/设备/计算机上创建一个SQLite文件,并将其复制到第一次运行的位置。如果使用iCloud,就不能再这样做了。iCloud由每个接收更改列表的设备作为“事务日志”工作,然后应用于它自己的SQLite存储。它需要知道更改了什么,而在一个块中获得一个.sqlite文件并不能告诉它。

这样做的iCloud方法要么是:

  • 从代码中创建初始数据(例如,insertStartData:方法)。你可以把它从一个褶皱,或任何你喜欢的。您必须首先检查数据是否还在那里。
  • 使用NSPersistentStoreCoordinatormigratePersistentStore:toURL:options:withType:error复制您的初始商店。

这是文件:

您不应该使用预先打包的数据库文件为初始内容添加种子。相反,您应该在代码中创建默认项,或者使用NSPersistentStore协调员的migratePersistentStore:toURL:options:withType:error:方法将预先打包的数据库迁移到所需的位置。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10140400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档