使用MagicalRecord - 无法从预加载.sqlite文件

问题描述:

我试图让我的神奇纪录SQLite数据库的一些信息,适当地获取数据。 应该指出 - 这个应用程序在iOS9之前没有任何问题。自iOS9以来,它崩溃了,所以我正在对它进行重构。我安装了cocoapods并通过豆荚安装了MagicalRecord(工作正常)。使用MagicalRecord - 无法从预加载.sqlite文件

在我的AppDelegate文件I预装DB数据从.sqlite文件我已经和设置使用MagicalRecord的CoreData堆栈。 ':)(默认数组'

显示没有条目

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
[self copyDefaultStoreIfNecessary]; 
    //Copy the preloaded DB to the default path of the application's DB (REQUIRED) 
    NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]; 
    NSURL *documentPath = [paths lastObject]; 
    NSURL *storeURL = [documentPath URLByAppendingPathComponent:@"Trips_54Miles.sqlite"]; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path] ]) { 
     NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Trips_54Miles" ofType:@"sqlite" ]]; 
     NSError *err = nil; 
     if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err]){ 
      NSLog(@"Error: Unable to copy preloaded db."); 
     } 
    } 
    //Setup Magical Record with the CoreData Stack 
    [MagicalRecord setupCoreDataStackWithStoreNamed:@"Trips_54Miles.sqlite"]; 
    NSArray *schools = [MetaMiles MR_findAllSortedBy:@"beg_school" ascending:YES]; 
    NSLog(@"Default Array: %@", schools); 
    return YES; 
} 

阵列 '学校',始终日志这样在出现。

好奇为什么。我检查了我正在加载的.sqlite文件,并且它加载了所有适当的信息。

我应该怎样领导才能提取信息的任何想法,将不胜感激。

+0

也许'copyDefaultStoreIfNecessary'未能复制的文件?这是代码中最明显的潜在问题。 –

+0

如果它无法复制文件,我将它设置为记录消息 - 我在控制台中看不到失败消息。 – Hanny

+0

它复制SQLite日志文件或只是主SQLite文件? –

根据您创建预加载的SQLite文件的方式,很可能有三个文件而不是一个 - 主文件.sqlite加上另外两个文件.sqlite-wal.sqlite-shm。如果是这种情况,则大部分或全部数据将存在于这些文件中。实际上,只复制.sqlite文件将删除所有数据,同时保持数据模型不变。所以你仍然可以打开文件,但没有什么可以取。

您将需要这些文件,以保证数据的完整副本。

+0

它已经很长一段时间(将近2年),因为我写这个程序。我所知道的是,只有一个.sqlite文件(历史上和当前)。我可以使用SQLite数据库浏览器查看.sqlite文件并查看所有适当的信息。 – Hanny

+0

如果只有一个文件,很好,但用SQLite数据库浏览器查看它并不相关 - 如果它们存在,它将使用日志文件。 –

+0

我以前从未使用过日志文件吗?这个应用程序工作了几年 - 我从来不必处理或担心日记文件(通过我自己的承认 - 我不知道这些是什么);所以我留下的印象是日记文件不是这里的合适答案。 – Hanny