sqlite中插入特殊字符的方法和接收到处理方法。
除’其他的都是在特殊字符前面加“/”,而 ' -> '' 。方法:keyWord = keyWord.replace("/","//");
什么是NSManagedObject模型?
NSManagedObjcet是NSObject的子类,Core Date的重要组成部分。是一个通用类,实现了Core Date模型层所需的基本功能,用户可以通过NSManagedObjcet建立自己的数据模型。
你实现过多线程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?
1> CoreData是对SQLite数据库的封装
2> coreData中有三个对象是必须掌握的,
NSManagedObject :只要定义一个类继承于该类就会创建一张与之对应的表, 也就是一个继承于该类的类就对应一张表. 每一个通过继承该类创建出来的对象,都是该类对应的表中的一条数据
NSManagedObjectContext: 用于操作数据库, 只要有类它就能对数据库的表进行增删改查
NSPersistentStoreCoordinator: 决定数据存储的位置 (SQLite/XML/其它文件中)
3> Core data本身并不是一个并发安全的架构所以在多线程中实现Core data会有问题.问题在于
>2.1 CoreData中的NSManagedObjectContext在多线程中不安全
>2.2如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext
>2.3每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例,这是因为NSManagedObjectContext会在便用NSPersistentStoreCoordinator前上锁
缓存可以分为:内存数据缓存、数据库缓存、文件缓存
- 每次想获取数据的时候
- 先检测内存中有无缓存
- 再检测本地有无缓存(数据库\文件)
- 最终发送网络请求
- 将服务器返回的网络数据进行缓存(内存、数据库、文件), 以便下次读取
什么是序列化和反序列化
序列化是讲对象转换成字符串
反序列化是讲字符串转化为
遵循NSCoding协议,实现复杂对象的存储,实现该协议后可以对其进行打包或者解包,转化为NSDate
SQLite是轻量级的关系型数据库,但是其功能一点也不亚于很多大型的数据库,当前很多的嵌入式设备都作为首选
SQLite 数据库的特点
基于C语言开发的轻量级数据库
在iOS中使用C语言语法进行数据库操作,访问
Sqlite使用的是动态数据类型,及时在创建的时候是一个数据类型,但是在操作的时候可以是另外一种数据类型