【发布时间】:2016-02-15 09:12:28
【问题描述】:
我正在尝试通过神奇的记录从我的 sqlite 数据库中获取一些信息。 应该注意 - 这个应用程序在 iOS9 之前运行没有任何问题。由于iOS9它崩溃了,所以我正在修改它。我安装了 cocoapods 并通过 pod 安装了 MagicalRecord(效果很好)。
在我的 AppDelegate 文件中,我使用我拥有的 .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;
}
数组'schools',总是这样显示在日志中:
'默认数组:( )'
不显示任何条目。
很好奇为什么。我检查了我正在加载的 .sqlite 文件,它已经加载了所有适当的信息。
任何关于我应该去哪里提取信息的想法都将不胜感激。
【问题讨论】:
-
也许
copyDefaultStoreIfNecessary无法复制文件?这是代码中最明显的潜在问题。 -
如果无法复制文件,我将其设置为记录消息 - 我在控制台中看不到失败消息。
-
它是复制 SQLite 日志文件还是仅复制主 SQLite 文件?
-
我相信它只是复制了主要的 SQLite 文件:你可以在这里看到 copyDefaultStoreIfNecessary:github.com/PushpinDesigns/54Miles/blob/dev/54%20Miles/…
标签: ios xcode sqlite core-data magicalrecord