CoreData:错误:(14)在设备上,不在模拟器中

彼得·克

在设备而非模拟器(现在)上运行时,出现此错误。

我也确实在模拟器上遇到了相同的错误,并从该线程实现了解决方案:在此处输入链接描述

使用此代码:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil) {
    return __persistentStoreCoordinator;
}

//    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"engliah_FamQuiz.sqlite"];

//=== USE DATABASE FROM MAIN BUNDLE ===//
NSURL *storeURL = [[NSBundle mainBundle] URLForResource:kNewDB withExtension:@"sqlite"];

// Use this for source store - ensures you don't accidentally write to the entities
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:1]
                                                     forKey:NSReadOnlyPersistentStoreOption];
// Make sure the WAL mode for Core Data is not enabled
   options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} }; <<< ADDED THIS LINE

//    NSDictionary *options = @{NSReadOnlyPersistentStoreOption : @YES, NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

这解决了模拟器中的问题,但应用程序在设备上崩溃,并出现以下错误:

2014-06-21 15:23:49.828 xxxx[30224:60b] Attempt to add read-only file at path file:///var/mobile/Applications/236047B5-0B0F-443D-ABCF-DCABA0166713/xxxx.app/yyyyy.sqlite read/write. Adding it read-only instead. This will be a hard error in the future; you must specify the NSReadOnlyPersistentStoreOption.
2014-06-21 15:23:49.838 xxxx[30224:60b] CoreData: error: (14) I/O error for database at /var/mobile/Applications/236047B5-0B0F-443D-ABCF-DCABA0166713/xxxx.app/yyyy.sqlite.  SQLite error code:14, 'unable to open database file'
2014-06-21 15:23:49.845 xxxx[30224:60b] Unresolved error Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa error 256.)" UserInfo=0x16e48d80 {NSUnderlyingException=I/O error for database at /var/mobile/Applications/236047B5-0B0F-443D-ABCF-DCABA0166713/xxxx.app/yyyyy.sqlite.  SQLite error code:14, 'unable to open database file', NSSQLiteErrorDomain=14}, {
NSSQLiteErrorDomain = 14;
NSUnderlyingException = "I/O error for database at /var/mobile/Applications/236047B5-0B0F-443D-ABCF-DCABA0166713/xxxx.app/yyyy.sqlite.  SQLite error code:14, 'unable to open database file'";

在模拟器中没有错误。同样,第一个错误也是新的。

部署目标:6.1

马丁·R

您的密码

NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:1]
                                                forKey:NSReadOnlyPersistentStoreOption];
options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };

设置optionsNSSQLitePragmasOption包含键但不包含的字典NSReadOnlyPersistentStoreOption,因为第二行覆盖了第一行中分配的字典。

您可能想要的是

NSDictionary *options = @{ 
    NSReadOnlyPersistentStoreOption : @YES,
    NSSQLitePragmasOption: @{@"journal_mode":@"DELETE"}
};

创建options包含两个键目录。

此外,在创建与应用程序捆绑在一起的SQLite文件时,您还必须禁用WAL模式

在模拟器中不会发生此问题,因为应用程序目录在模拟器中是读写的,但在设备上是只读的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CoreData:错误:(14)在设备上,不在模拟器中

来自分类Dev

CoreData在设备上发生错误,但在模拟器上正常

来自分类Dev

CoreData在设备上发生错误,但在模拟器上正常

来自分类Dev

设备中的XML解析错误不在模拟器中-NSXMLParserErrorDomain代码= 5

来自分类Dev

在Corona小部件中显示在模拟器中,但不在设备上

来自分类Dev

应用程序在模拟器上运行,但不在真实设备中运行

来自分类Dev

Microsoft Windows Phone 8:AdControl广告显示在模拟器中,但不在设备上显示

来自分类Dev

RelativeLayout中的layout_centerInParent不在模拟器或设备上居中

来自分类Dev

景观方向在模拟器中按预期工作,但不在设备上

来自分类Dev

UITableView 数据显示在模拟器中,但不在实际设备上

来自分类Dev

Android Studio-imageView在设计编辑器中显示图像,但不在模拟器或设备上显示

来自分类Dev

联系人访问权限显示在模拟器中,但有时不在真实设备上显示

来自分类Dev

GPUImage在模拟器中崩溃,在设备上崩溃不多

来自分类Dev

UISearchBar未显示在设备上,但显示在模拟器中

来自分类Dev

在xcode模拟器上播放视频,但不在设备上播放

来自分类Dev

应用程序在模拟器上运行,而不在设备上运行

来自分类Dev

NSKeyedArchiver在模拟器上运行,但不在实际设备上

来自分类Dev

为什么在设备上而不在模拟器上运行时会破坏数据?

来自分类Dev

Android ListView不在实际设备上显示,但在模拟器上显示

来自分类Dev

代码在模拟器上执行,但不在设备上执行

来自分类Dev

LibGDX AssetManager 在模拟器上加载 .wav 文件,但不在移动设备上

来自分类Dev

在模拟器上创建但不在设备上的数据库

来自分类Dev

xamarin android apk 安装在模拟器上但不在设备上

来自分类Dev

UITextView:链接检测在模拟器中有效,不在设备上

来自分类Dev

UITextView:链接检测在模拟器中有效,不在设备上

来自分类Dev

Alamofire 背景在模拟器上工作但不在设备上

来自分类Dev

本地通知在 ios 模拟器上工作但不在设备上

来自分类Dev

Xcode 7.3 / Swift 2.2错误?代码内置在模拟器中,但在设备上显示错误

来自分类Dev

Admob在模拟器中显示广告,但不在设备中显示

Related 相关文章

  1. 1

    CoreData:错误:(14)在设备上,不在模拟器中

  2. 2

    CoreData在设备上发生错误,但在模拟器上正常

  3. 3

    CoreData在设备上发生错误,但在模拟器上正常

  4. 4

    设备中的XML解析错误不在模拟器中-NSXMLParserErrorDomain代码= 5

  5. 5

    在Corona小部件中显示在模拟器中,但不在设备上

  6. 6

    应用程序在模拟器上运行,但不在真实设备中运行

  7. 7

    Microsoft Windows Phone 8:AdControl广告显示在模拟器中,但不在设备上显示

  8. 8

    RelativeLayout中的layout_centerInParent不在模拟器或设备上居中

  9. 9

    景观方向在模拟器中按预期工作,但不在设备上

  10. 10

    UITableView 数据显示在模拟器中,但不在实际设备上

  11. 11

    Android Studio-imageView在设计编辑器中显示图像,但不在模拟器或设备上显示

  12. 12

    联系人访问权限显示在模拟器中,但有时不在真实设备上显示

  13. 13

    GPUImage在模拟器中崩溃,在设备上崩溃不多

  14. 14

    UISearchBar未显示在设备上,但显示在模拟器中

  15. 15

    在xcode模拟器上播放视频,但不在设备上播放

  16. 16

    应用程序在模拟器上运行,而不在设备上运行

  17. 17

    NSKeyedArchiver在模拟器上运行,但不在实际设备上

  18. 18

    为什么在设备上而不在模拟器上运行时会破坏数据?

  19. 19

    Android ListView不在实际设备上显示,但在模拟器上显示

  20. 20

    代码在模拟器上执行,但不在设备上执行

  21. 21

    LibGDX AssetManager 在模拟器上加载 .wav 文件,但不在移动设备上

  22. 22

    在模拟器上创建但不在设备上的数据库

  23. 23

    xamarin android apk 安装在模拟器上但不在设备上

  24. 24

    UITextView:链接检测在模拟器中有效,不在设备上

  25. 25

    UITextView:链接检测在模拟器中有效,不在设备上

  26. 26

    Alamofire 背景在模拟器上工作但不在设备上

  27. 27

    本地通知在 ios 模拟器上工作但不在设备上

  28. 28

    Xcode 7.3 / Swift 2.2错误?代码内置在模拟器中,但在设备上显示错误

  29. 29

    Admob在模拟器中显示广告,但不在设备中显示

热门标签

归档