我创建了一个 SQLite 数据库,其中包含一些 JSON 的记录,使用本教程,我想使用 MagicalRecord 来查询它。
MagicalRecord 看到 NSManagedObject (BlogPost
)并且可以创建记录,但它看不到预填充的记录,所以我猜它看不到我添加的 SQLite 文件。我已经使用 SQLite 客户端验证了 SQLite 数据库确实包含行。
In application:didFinishLaunchingWithOptions:
,我已经把:
[MagicalRecord setupCoreDataStackWithStoreNamed:@"DBG.sqlite"];
And in applicationWillTerminate:
:
[MagicalRecord cleanUp];
当我打电话时[BlogPost MR_findAll]
在控制器中,它返回一个空集。 DBG.sqlite 位于项目目录的根目录下,我尝试将其放入“复制捆绑资源”中,但是blogPosts
仍然返回一个空集。
有任何想法吗?
问题最终是需要将预加载的 SQLite 数据库复制到应用程序数据库的默认路径:
NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentPath = [paths lastObject];
NSURL *storeURL = [documentPath URLByAppendingPathComponent:@"DBG.sqlite"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {
NSURL *preloadURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"DBG" ofType:@"sqlite"]];
NSError* err = nil;
if (![[NSFileManager defaultManager] copyItemAtURL:preloadURL toURL:storeURL error:&err]) {
NSLog(@"Error: Unable to copy preloaded database.");
}
}
这应该放在之前[MagicalRecord setupCoreDataStackWithStoreNamed:@"DBG.sqlite"];
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)