Xcode Core Data:将现有 XML 更改为 Sqlite(NSXMLStoreType 更改为 NSSQLiteStoreType)

2024-01-09

在我的第一个应用程序中,我在持久存储协调器中使用了 NSXM StoreType。

[storeCooordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:storeURL options:options error:nil];

现在,我想更改为 NSSQLiteStoreType:

[storeCooordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:nil];

如果我只是更改商店类型,应用程序就会崩溃。那么我必须做什么呢?我可以做一次吗:

  • 检查旧商店是否存在以及
  • 如果是,将其转换为 sqlite 并
  • 之后删除旧的 xml 存储吗?

我不知道如何将其转换为 sqlite。模型是相同的。

编辑并回答

我使用这个解决方案来迁移一次数据库(感谢沃尔克)

//-> applicationFilesDirectory is the url to the documents directory

NSURL* oldURL = [applicationFilesDirectory URLByAppendingPathComponent:@"DBName1.xml"];
NSURL* newURL = [applicationFilesDirectory URLByAppendingPathComponent:@"DBName2.sqlite"];
NSError *error = nil;
NSFileManager * fileManager = [NSFileManager defaultManager];

        //-> if file exists            
        if ([fileManager fileExistsAtPath:[oldURL path]]) {
            NSLog(@"File is here");

            NSManagedObjectModel* managedModel = [NSManagedObjectModel mergedModelFromBundles:nil];
            NSPersistentStoreCoordinator* tempCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedModel];

            id xmlStore =  [tempCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:oldURL options:options error:nil];

            [tempCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:newURL options:options error:nil];

            if ( ![tempCoordinator migratePersistentStore:xmlStore toURL:newURL options:options withType:NSSQLiteStoreType error:&error] ) {
                //-> delete the old file from directory
                [fileManager removeItemAtURL:oldURL error:NULL];
            }
        }

您可以使用migratePersistentStore:toURL:options:withType:error:如中所述苹果核心数据文档 https://developer.apple.com/library/ios/documentation/cocoa/conceptual/CoreData/Articles/cdUsingPersistentStores.html.

如果这种情况自动发生,您将需要在启动时添加迁移。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode Core Data:将现有 XML 更改为 Sqlite(NSXMLStoreType 更改为 NSSQLiteStoreType) 的相关文章

  • UICollectionViewCell 拖动预览的自定义视图

    我正在尝试实现一项功能 用户可以将一个集合视图单元格拖放到另一个集合视图单元格上 但是 我想完全更改运动中物体的预览 以匹配我的应用程序的视觉隐喻 该项目没有移动 该项目包含的东西正在移动 例如 假设我的collectionview单元格显
  • tableView:canEditRowAtIndexPath: 弹出 viewController 时崩溃

    我有一个带有UITableView 我允许通过滑动来编辑 删除 的行 就像在邮件应用程序中一样 我用以下方法来做到这一点 BOOL tableView UITableView tableView canEditRowAtIndexPath
  • 核心数据executeFetchRequest消耗大量内存

    我正在核心数据数据库中插入 cca 100 000 条记录 数据库包含 3 个实体 球员 俱乐部 球员俱乐部 实体之间存在关系 玩家 gt 玩家俱乐部俱乐部 在 PlayerClub 中插入时 我注意到插入大约 50 000 条记录后会消耗
  • Android 在创建时出现 SQLiteException

    首先我想说我是android新手 所以如果这个问题太愚蠢我很抱歉 我正在为带有两个表的 SQLite 数据库编写一个内容提供程序 表格上是在导航抽屉活动中显示列表 第二个表格是在 ListFragment 中显示 每次启动应用程序时 我都会
  • 尽早检测有问题的 XIB 视图

    我的笔尖名称有一个拼写错误 当我推向导航控制器时 它在代码中被破坏了 弄清楚它并没有花太长时间 但我认为最好尽早断言格式良好 以便更容易弄清楚 问题是它不是零 它只是无法从笔尖正确地形成自己 在 initWithNib 之后是否有更好的断言
  • 如何在禁用状态下更改 UIButton 图像 alpha?

    我有一个带有图像的 UIButton 在其禁用状态下 该图像应具有 0 3 alpha UIButton button UIButton buttonWithType UIButtonTypeCustom UIImage arrowImag
  • 从 Xcode 5.1 项目中删除所有调试表达式

    我在使用 C 和 XCode 5 1 时意外添加了一个调试表达式 现在每次我尝试查看添加此表达式的函数堆栈时 XCode 都会崩溃 我不知道如何在不单击该功能的情况下摆脱这个表达式 所以我有点迷失了 我找到了对 Expressions so
  • libtiff 错误:未配置旧式 JPEG 压缩支持

    在 Mac OS X 上使用 libtiff 将 TIFF 转换为 BMP 时 出现以下错误 scannerdata tif Old style JPEG compression support is not configured scan
  • XOR或其他简单的文件混淆方法ios目标c

    我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序 我正在寻找一些简单的方法来混淆文件以确保安全 这些方法不需要我经历额外的大众市场 CCATS 加密审查流程 但也将确保版权所有者已尽我所能来保证他们的数据安全 当然 我用密码
  • MAC OS 的 java.awt.Robot 类中出现无头环境错误

    我正在尝试使用 JavaFX 应用程序捕获屏幕截图Robot class 这是我在我的应用程序中使用的代码 Rectangle screenBounds new Rectangle Screen getPrimary getBounds g
  • Xcode 7.2 无法连接到装有 iOS 9.2 的 iPhone

    出于开发目的 我已经在我的 iPhone 5s 上安装了 iOS 9 2 beta 当然 我还安装了Xcode 7 2 beta 当我想在设备上运行应用程序扩展 键盘 时 该应用程序会正确构建 安装在 iPhone 上并启动 然而 然后我在
  • FIRApp 链接器错误 [“_OBJC_CLASS_$_FIRApp”]

    我已经搜索过 SO 和 Google 但找不到有效的答案 我已经在多个项目中使用了新的 Firebase Cocoapod 但是现在 当将其添加到不同的项目时 我收到以下错误 我正在使用 Xcode 7 3 1 和 cocoapods 1
  • 如何动态添加XCTestCase

    我正在为一个白标签项目编写 UI 测试 其中每个应用程序都有一组不同的菜单项 测试点击每个菜单项并截取屏幕截图 使用快车道快照 https docs fastlane tools actions snapshot 目前这一切都发生在一个内部
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • iOS 版 Google 地图 sdk 中折线的轮廓

    我的要求是在地图上显示一条绿色折线 但当地图切换到卫星视图时 绿色折线变得不清楚 我无法改变折线的颜色 因此 为了将折线与背景 地图的卫星视图 区分开来 我需要为折线绘制白色轮廓 我浏览了 GMSPolyline 类的文档 但找不到任何可以
  • Objective-C 中 NSURL 为 null 而 NSString 是正确的

    我有一个NSString包含一个 url 以及当我分配时NSURL与NSString NSURL 输出 空 这是因为url中有一些非法字符 导致NSURL不编码就无法读取NSString包含网址 NSString u incomingUrl
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • Xcode 中的 Prefix.pch 文件是什么?

    许多开发人员正在向其中添加各种方便的宏Prefix pch 但我的问题是那是什么Prefix pch file 如果我删除它Prefix pch来自我的文件Xcode 那么我的应用程序会运行吗 或者会显示什么错误吗 或者它会在构建过程中崩溃
  • 初始化Object中的空字符串?

    有人使用以下方法来初始化 NSstring NSString astring NSString alloc init 我想知道为什么不直接使用 NSString atring nil or NSString astring 没有semant
  • Android:列“_id”不存在

    我收到这个错误 IllegalArgumentException 列 id 不存在 当使用SimpleCursorAdapter从我的数据库中检索 该表确实有这个 id柱子 注意到这是一个常见问题 我尝试根据网上的一些解决方案来解决它 但它

随机推荐

  • 如何使用 Python 将专辑封面嵌入到 MP3 中?

    我一直在使用 mutagen 来读取和写入 MP3 标签 但我希望能够将专辑封面直接嵌入到文件中 以下是如何使用 mutagen 将 example png 作为专辑封面添加到 example mp3 中 from mutagen mp3
  • C++ pow 函数 - 结果无效?

    为什么 dResult 的输出无效 环境 Visual Studio 2008 int tmain int argc TCHAR argv double dN 0 091023604111478473 double dD 0 1277777
  • jQuery - 禁用基于另一个字段选定值的输入字段

    我正在寻找一个可以执行此操作的 jQuery 插件 例如
  • thymeleaf - 将 th:each 与 th:href 结合起来

    我是 Thymeleaf 和 webdev 的新手 我正在尝试将 Thymeleaf 迭代 th each 与 URL 重写 th href 结合起来 a hello a 这会产生以下结果 其中lid 45 a href list l li
  • 在练习 TDD 的同时学习 OpenGL(单元测试)

    我已经开始了一个新的游戏项目 并决定为其学习和使用OpenGL 项目正在Windows和Linux上同时开发 同时 我也对测试驱动开发非常感兴趣 并且正在尽最大努力在任何实际代码之前编写单元测试来引导设计 然而 我认为我缺乏知识可能会绊倒我
  • 模拟两个方块碰撞以计算 PI 时的动画故障

    我在用pygame创建两个方块碰撞的模拟质量比为 100 次方 明确地说 这意味着较大块与较小块的比率可以是100 0 100 1 100 2等等 我在必要时添加了注释和文档字符串 以使逻辑易于理解 import pygame from c
  • 使用ServiceStack的Swagger Plugin,如何实现带有预设值列表的字符串字段

    我正在使用 ServiceStack 的新 Swagger 插件实现 Swagger API 文档 并尝试确定如何使用 容器 数据类型 我需要显示一个字符串字段 其中包含预定值列表和其他作为子对象列表的参数 除非我遗漏了一些东西 否则我相信
  • 在 Ubuntu 11.04 Natty 上进行 Android 调试

    我放置了一个名为 70 android rules 的文件 在 etc udev rules d with 子系统 USB SYSFS 22b8 22b8 模式 0666 但它仍然无法读取我的摩托罗拉 Atrix 是我做错了什么吗 我找到的
  • 将 QByteArray 附加到 QDataStream?

    我必须填充一个QByteArray具有不同的数据 所以我正在使用QDataStream QByteArray buffer QDataStream stream buffer QIODevice WriteOnly qint8 dataHe
  • 非聚集索引在 SQL Server 中的工作原理

    我有一个与数据库理论相关的问题 假设我们有一个包含 3 列的表 PersonID PersonName PersonAge 我们知道 当我们有一个一列的非聚集索引时 SQL Server会按照指定的列对表数据进行排序 并从中构建B 树 当我
  • 在 Python 中使用 readlines 是坏代码吗?

    我因使用 file readlines 的答案而被否决 批评者说使用 readlines 是垃圾代码 以及其他非常粗鲁的语句 有那么糟糕吗 我认为问题在于readlines 将整个文件加载到内存中 理论上 内存可能很大 就内存使用而言 惰性
  • 如何在谷歌浏览器扩展中创建套接字?

    我为谷歌浏览器创建了一个小 hello world 扩展http code google com chrome extensions getstarted html http code google com chrome extension
  • Twitter 的 OAuth 系统如何工作?

    我有一个演示脚本 可以让我使用我的应用程序进行授权并发回我的令牌 但这很令人困惑 我一直在 CURL 或 simpleXML 函数中使用用户名和密码来授权 API 调用 我不明白这与 oauth 有什么关系 我知道我将存储令牌 但是一旦我拥
  • Windows 上的 .NET Core 3.0 忽略 NO_PROXY

    我们正在尝试让代理功能在 Windows 上的 NET Core 3 0 或 3 1 应用程序中工作 我们发现 HTTPS PROXY 和 HTTP PROXY 变 量按预期进行识别和处理 但默认代理似乎不支持 NO PROXY 变 量 这
  • Git 通过 ngrok 隧道转发

    我的本地实例上有一个 git 存储库 我想从家庭网络外部访问它 我应该为此在本地实例上创建 git 服务器和 ssh 服务器吗 另外我应该使用 ngrok 建立隧道的端口是什么 任何意见都将不胜感激 如图所示第193期 https gith
  • Perl 中的反向 DNS 查找

    如何执行反向 DNS 查找 即如何在 Perl 中将 IP 地址解析为其 DNS 主机名 如果您需要更详细的 DNS 信息 请使用Net DNS http search cpan org olaf Net DNS 0 63 lib Net
  • 将 HBITMAP 绘制到分层窗口上。怎么了?

    大家好 美好的一天 我的最终目标是在屏幕上绘制一个包含 Alpha 的 PNG 文件 这意味着不是在自己的窗口中 而是在桌面上的某个位置 将 PNG 加载到 HBITMAP 的部分现在可以工作 以不同的方式进行测试 但我无法做到绘制它 包括
  • Java程序查找字符串数组中元音的长度和数量

    我需要从用户那里获取一个字符串并将其输出到一个表中 包括其单词数和元音数 但我不知道如何计算元音 我尝试了以下方法 import java util Scanner public class Array2 public static voi
  • Objective C - iCal 不在 iOS 9 中创建自定义日历和新事件

    这在 iOS 8 中完美运行 但在 iOS 9 中创建问题 这里是代码 self eventManager eventStore requestAccessToEntityType EKEntityTypeEvent completion
  • Xcode Core Data:将现有 XML 更改为 Sqlite(NSXMLStoreType 更改为 NSSQLiteStoreType)

    在我的第一个应用程序中 我在持久存储协调器中使用了 NSXM StoreType storeCooordinator addPersistentStoreWithType NSXMLStoreType configuration nil U