objective-c – 在MagicalRecord中使用现有的SQLite数据库

objective-c – 在MagicalRecord中使用现有的SQLite数据库,第1张

概述我创建了一个SQLite数据库,其中包含使用 this tutorial的一些JSON的记录,我想使用MagicalRecord来查询它. MagicalRecord看到NSManagedObject(BlogPost)并且可以创建记录,但是它没有看到预先填充的记录,所以我猜它没有看到我添加的SQLite文件.我已经验证了SQLite数据库确实包含使用SQLite客户端的行. 在应用程序中:did 我创建了一个sqlite数据库,其中包含使用 this tutorial的一些JsON的记录,我想使用MagicalRecord来查询它.

MagicalRecord看到NSManagedobject(BlogPost)并且可以创建记录,但是它没有看到预先填充的记录,所以我猜它没有看到我添加的sqlite文件.我已经验证了sqlite数据库确实包含使用sqlite客户端的行.

在应用程序中:dIDFinishLaunchingWithOptions:,我把:

[MagicalRecord setupCoreDataStackWithStorenamed:@"DBG.sqlite"];

并在applicationWillTerminate ::

[MagicalRecord cleanUp];

当我在控制器中调用[BlogPost MR_findAll]时,它返回一个空集. DBG.sqlite位于项目目录的根目录下,我尝试将其放入“copy Bundle Resources”中,但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”];之前.

总结

以上是内存溢出为你收集整理的objective-c – 在MagicalRecord中使用现有的SQLite数据库全部内容,希望文章能够帮你解决objective-c – 在MagicalRecord中使用现有的SQLite数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1221151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存