① 如何使用Core Data
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在sqlite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于着名的Hibernate持久化框架,不过功能肯定是没有Hibernate强大的。简单地用下图描述下它的作用:
左边是关系模型,即数据库,数据库里面有张person表,person表里面有id、name、age三个字段,而且有2条记录;
右边是对象模型,可以看到,有2个OC对象;
利用Core Data框架,我们就可以轻松地将数据库里面的2条记录转换成2个OC对象,也可以轻松地将2个OC对象保存到数据库中,变成2条表记录,而且不用写一条SQL语句。
② ios开发 什么情况要用到数据库
第一,我不是高手,第二,我可以分享下我的心得。一般的数据量很小的项目,没必要使用数据库,如果只是保存写用户信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一个项目都需要保存一个使用状态,不能每次打开项目的时候都和第一次运行一样,完全新,要给人以使用过的感觉就要存储一些历史数据。如果怕影响用户体验的话,可以多开线程在后台去对数据操作(数据量大的情况下),记得对线程要回收。如果你对保存数据比较迷茫的话,你可以google一下ios的四种数据持久化,对于sqlite和coredata,我个人认为只是两种不同的存储方法,一种是小型轻量级sqlite数据库,所有移动设备经常用到的,还有一种是苹果针对ios操作系统开发的coredata数据存储,具体孰胜孰略还有待你自己去了解,一般如果我的数据库要非常多的表格互相关联最后查询一条结果那么我会采用sqlite,如果存储一些有规律的数据那么我会采用coredata,没有哪个更好的说法,只能说这两种都各有千秋,而我听前辈们说,coredata只是苹果对sqlite的又一次封装而已,方便操作但也局限操作
③ 请教iOS数据库coredata多版本升级问题
搜扣丁堂关于iOSCoreData讲解: Core Data数据持久化SQLite升级ios集说Core Data前我先说说CoreData使用几类 (1)NSManagedObjectModel(管理象模型) 相于实体包含 实体间关系 (2)NSManagedObjectContext(管理象文) 操作实际内容 作用:插入数据 查询 更新 删除 (3)NSPersistentStoreCoordinator(持久化存储助理) 相于数据库连接器 (4)NSFetchRequest(获取数据请求) 相于查询语句 (5)NSPredicate(相于查询条件) (6)NSEntityDescription(实体结构) (7)缀名.xcdatamodel包 面.xcdatamodel文件用数据模型编辑器编辑 编译.momd或.mom文件文件没东西我程序用东西报错原
-
④ 问题如下 菜鸟求教啊
1.Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
2.#import 跟#include 又什么区别,@class呢;#import<> 跟 #import”"又什么区别?
3.属性readwrite,readonly,assign,retain,,nonatomic 各是什么作用,在那种情况下用?
4.id 声明的对象有什么特性?
5.MVC是什么?有什么特性?为什么在iphone上被广泛运用?
6.对于语句NSString* testObject = [[NSData alloc] init];testObject 在编译时和运行时分别时什么类型的对象?
7.什么是安全释放?
8.为什么有些4.0独有的objective-c 函数在3.1上运行时会报错.而4.0独有的类在3.1上分配内存时不会报错?分配的结果是什么?
9.为什么4.0独有的c函数在3.1的机器上运行不会报错(在没有调用的情况下?)而4.0独有的类名在3.1的机器上一运行就报错?
10.常见的object-c的数据类型有那些, 和 c 的 基本数据类型有什么区别?如:nsinteger 和int
11.property中属性retain,,assgin的含义分别是什么?有什么区别?将其转换成get/set方法怎么做?有什么注意事项?
12.委托是什么?委托的property声明用什么属性?为什么?
13.浅拷贝和深拷贝区别是什么?…
14.NSString 和 NSMutableString 有什么区别?
15.自动释放池跟GC有什么区别?iphone上有GC么?[pool release] 和[pool drain]有什么区别?
16.
for(int index = 0; index < 20; index ++){
NSString *tempStr = @”tempStr”;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?
17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
18.在一个对象释放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove这个对象可能会出现什么问题?
19.怎样实现一个 singleton的类.给出思路。
20.什么是序列化或者Acrchiving,可以用来做什么,怎样与结合,原理是什么?.
21.线程是什么? 有哪些注意事项.?
22.在iphone上有两件事情要做,请问是在一个线程里按顺序做效率高还是两个线程里做效率高?为什么?
23.runloop是什么?在主线程中的某个函数里调用了异步函数,怎么样block当前线程,且还能响应当前线程的timer事件,touch事件等.
24.ios平台怎么做数据的持久化?coredata和sqlite有无必然联系?coredata是一个关系型数据库吗?
25.阐述一个nil对象从interface bulider产生,到载入程序运行空间,最后被释放时所经历的生命周期.
26.notification是同步还是异步? kvo是同步还是异步?notification是全进程空间的通知吗?kvo呢?
27.kvc是什么?kvo是什么?有什么特性?
28.响应者链是什么?
29.unix上进程怎么通信?
30.timer的间隔周期准吗?为什么?怎样实现一个精准的timer?
31.UIscrollVew用到了什么设计模式?还能再foundation库中找到类似的吗?
32.如果要开发一个类似eclipse的软件,支持插件结构。且开放给第三方开发。你会怎样去设计它?(大概思路)
33.线程和进程的区别和联系?
34.C和obj-c 如何混用?
35.以下每行代码执行后,person对象的retain count分别是多少
person *person = [[person alloc] init]; // count 1
[person retain]; // count 2
[person release]; //count 1
[person release]; //retain count = 1;
36.ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?
37.ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?
38.ios5新特性有那些?
39.谈谈你对ARC 的认识和理解?
⑤ 获取聊天记录是从coreData中获取吗
coredata其实也是用sqlite来存储数据,是对sqlite的封装。不过苹果称其不是关系型的。
相对于数据表的对应:
表格结构:NSEntityDescription
数据库中所有表格和他们的联系:NSManagedObjectModel
数据库存放方式:NSPersistentStoreCoordinator
数据库操作: NSManagedObjectContext
查询语句: NSFetchRequest
表格的记录: NSManagedObject
通常定义model, 是用文件CoreData.xcdatamodel,可以图形化的操作。
NSPersistentStoreCoordinator类的对象通常用NSManagedObjectModel的对象来初始化, 这个类抽象出不同的存放方式,最经常用的是NSSQLiteStoreType。
NSManagedObjectContext类的对象又用NSPersistentStoreCoordinator的对象来初始化, 它里面有些方法来添加、删除NSManagedObject。
NSFetchRequest类通常用NSEntityDescription来构造查询,也可以指定排序。
NSFetchedResultsController类,只是又封了一下, 和NSFetchRequest合起来使用, 方便取数据。另外和NSManagedObjectContext关联, 当数据库发生变化的时候收到通知.
更详细用法和例子可找书籍来看看吧。
⑥ ios 用什么工具查看coredata数据库
Core Data 简介
• Core Data 是 iOS SDK 里的一个很强大的框架,允许程序员 以面向对象 的方式储存和管理数据 。使用 Core Data 框架,程序员可以很轻松有效 地通过面向对象的接口管理数据
• Core Data 框架提供了 对象 - 关系映射 (ORM) 的功能,即能够将 OC 对象转 化成数据,保存在 SQLite3 数据库文件中,也能够将保存在数据库中的 数据还原成 OC 对象
• 在数据操作过程中,无需编写任何 SQL 语句
• 要使用 Core Data , 需要导入 CoreData 框架
⑦ 在ios开发中coredata与sqlite数据库操作有什么优势
转载 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系。
这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主要是查询), 表格里面的记录。
下面将上面说的文字, 跟CoreData的类作个对应:
表格结构 --> NSEntityDescription
数据库中所有表格和他们的联系 -->NSManagedObjectModel
数据库存放方式 --> NSPersistentStoreCoordinator
数据库操作 --> NSManagedObjectContext
查询语句 --> NSFetchRequest
表格的记录 --> NSManagedObject
可能上面的对应关系并非十分严格, 但确实可以帮助理解.
下面再看看CoreData的类
NSEntityDescription
NSManagedObjectModel
NSEntityDescription用来定义表格结构, 所以你就可以理解NSManagedObjectModel中的setEntities:(NSArray *)entities函数大概有什么用了 . 通常, 定义model, 是用文件CoreData.xcda*****odel, 可以图形化的操作. 这类似用nib来创建界面.
建个工程, 使用coredata, 模拟器运行之后, 程序对应的document目录出现一个CoreData.sqlite. 可以利用sqlite3命令来查看里面的表格结构
用命令行sqlite3 CoreData.sqlite 进入
>.tables
ZEVENT Z_METADATA Z_PRIMARYKEY
可以看到有表格ZEVENT, 对应的CoreData.xcda*****odel文件有名字叫Event的Entity
>.schema ZEVENT
CREATE TABLE ZEVENT ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZTIMES*****P TIMES*****P );
对应的Event中有属性timeS*****p, 可以看到, 相应的ZEVENT表格中有字段TIMES*****P
> select * from ZEVENT
1|1|1|306295807.974966
2|1|1|306295810.981875
3|1|1|306295811.982537
这表格有三个记录, 可以用来初始化三个NSManagedObject, 修改了NSManagedObject, save之后也修改了表格记录
你可以在CoreData.xcda*****odel添加新的entity, 之后用sqlit3命令来查看数据库的变化
NSPersistentStoreCoordinator
这个类的对象通常用NSManagedObjectModel的对象来初始化, 这个类抽象出不同的存放方式, 最经常用的是NSSQLiteStoreType.
NSManagedObjectContext
这个类的对象又用NSPersistentStoreCoordinator的对象来初始化, 它里面有些方法来添加, 删除NSManagedObject
NSFetchRequest
通常用NSEntityDescription来构造查询, 也就指定查询那个表格, 另外可以指定排序.
在CoreData的设计中, 下一层有相应的属性指向上一层, 所以NSManagedObject有属性得到NSEntityDescription, NSEntityDescription有属性得到NSManagedObjectModel.
至于类
NSFetchedResultsController, 只是又封了一下, 和NSFetchRequest合起来使用, 方便取数据, 另外和NSManagedObjectContext关联, 当数据库发生变化的时候收到通知.
这文章只初步梳理了一下CoreData各类的关系, 各类的方法还需要一一研究. 文章最开始说CoreData是对sqlite数据库的一个封装, 不是严格的, CoreData不一定用sqlit来实现, 但他们之间确实有种对应关系。