在Core Data应用中使用原生SQL功能

移动开发 iOS
本文介绍的是在Core Data应用中使用原生SQL功能,不多说,我们先来看详细内容。

Core Data应用中使用原生SQL功能是本文要介绍的内容,苹果在iPhone 3.0以后的sdk中提供了Core Data功能,对于普通的数据库应用开发来说,大大提高了方便性。

新建Window Base Application的时候,选上下面的使用Core Data,模板就自动创建好了,在delegate文件里提供了使用Core Data存取数据的所有方法,在其它View Controller里面只要调用delegate里面的方法就可以了。

而修改Data Model并基于该Model创建Entity定义也提供了可视化的操作,一旦定义了实例,只要在程序中new一个实例,给变量赋值,然后调用 delegate中的save方法就可以添加一条新的记录了。这种方法对于长文本和时间等sql中比较难处理的字段尤其好用。而且在已保存的记录中取列表等操作也非常方便。(具体可以参考apple提供的Core Data入门教程)。

但是后来当我需要做汇总功能的时候,就完全傻掉了,虽然Core Data也提供了简单的sum, avg等运算,但是对于ralationship下的sum却完全找不到文档,甚至论坛上也搜不到解决方案。难道要我取出list再一个个手动汇总?这样数据量多的时候效率低的不是一点。

当然,这时候如果能直接使用sql语句来汇总,那就最简单不过了。可是,Core Data封装的很完整,都不知道它把数据存到哪里去了,怎么办?难道要用sqlite重写整个程序,那已有添加和明细等功能就要做相当大的无谓的改动了。

今天终于找到了解决方案:Core Data本身就是基于sqlite的封装,所以它的底层仍然是使用sqlite进行存储数据的,而它使用的数据库,就在delegate文件中。通常是程序的Documents目录下的以程序名为名字的sqlite文件。如果程序已经在模拟器中运行过,只要进入用户目录下的 Library/Application Support/iPhone Simulator/User/Applications/,这里是你所有模拟器中运行过的程序,找到你需要的那个,进去以后进入Documents目录,里面就是自动生成的sqlite数据库文件。把它复制出来,用sqlite3命令直接查看数据库结构就可以了。

默认情况下生成的数据表的名字就是你的Entity的名字,加上字母Z开头,字段名也就是你定义的实例名字,同样加上字母Z开头,而主键就是个自增长的int型。有了这个数据库结构,在程序中添加libsqlite 3.0.dylib的framework,然后就可以在程序中使用原生 sqlite 3功能了。

有了方便的core data解决简单的数据操作,再配合完全自定义的sqlite功能,现在可以随心所欲的开发强大的数据库应用了

小结:在Core Data 应用中使用原生 SQL 功能的内容介绍完了,希望本文对你有所帮助。

转自 http://dev.yesky.com/235/11107735.shtml

责任编辑:zhaolei 来源: Cocoa China
相关推荐

2011-08-19 17:44:01

2023-12-22 09:11:45

AndroidNFC移动开发

2021-02-25 11:19:37

谷歌Android开发者

2021-11-02 13:54:41

ElasticSear.NET程序

2009-09-22 12:17:59

ibmdwLotus

2011-12-25 15:37:51

ibmdw

2011-05-27 08:48:13

Android HTML

2021-09-07 10:24:36

Vue应用程序Web Workers

2013-10-09 11:15:49

Ubuntu应用程序

2009-06-19 13:45:53

Java应用程序Jfreechart

2021-08-10 07:27:42

ASP.NETFluentd日志

2009-07-04 00:50:38

2024-10-16 09:43:45

GreatSQLHint数据库

2009-11-23 19:52:55

ibmdwFlex

2022-08-30 20:00:37

零信任Linkerd

2012-06-05 09:54:50

Windows Pho

2009-04-12 08:46:43

Symbian诺基亚移动OS

2013-12-13 17:21:14

Lua脚本语言

2009-06-25 16:49:24

Hibernate

2023-11-17 12:04:39

GORM并发
点赞
收藏

51CTO技术栈公众号