【8】IOS面试题--数据存储
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 什么是谓词?
答案:谓词是通过NSPredicate,是通过给定的逻辑条件作为约束条件,完成对数据的筛选。
predicate = [NSPredicatepredicateWithFormat:@"customerID == %d",n];
a = [customers filteredArrayUsingPredicate:predicate];
2. 什么是数据持久化?简单谈一下你所了解的IOS
中的数据持久化的方式。
数据持久化就是将内存中的数据模型转换为存储模型,以及
将存储模型转换为内存中的数据模型的统称.数据模型可以
是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。
在IOS中,少量的数据持久化可以使用属性列表、NSUserDefaults、归档等;
大量的数据持久化可以使用SQLite数据库、CoreData等,也可以使用FMDB第三方类库完成。
2. NSUserDefaults?
NSUserDefaults适合存储轻量级的本地数据,以键值对的形式进行存储,只能存储基本的OC对象(不包括自定义的对象)。
NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。
针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
NSUserDefaults是典型的单例模式。
3. ProtocolList
属性列表,是一种用来存储串行化后的对象的文件。因为扩展名为plist,因此通常被称为plist文件。
plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,其内容为xml格式。它可以在程序运行期间动态的创建和读写,因此可以用于少量数据时候的数据持久化。
3. 归档?优缺点?
归档也叫序列化,是将文件存在硬盘,解档是从硬盘还原数据。
归档的形式来保存数据,只能一次性归档保存以及一次性解压。所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据。
除了简单的归档,还可以实现对象的归档。对象归档是指对象写入文件保存到硬盘上,当再次重写打开程序时,可以还原这些对象。可以实现对象序列化或者对象持久化。
除了原有的OC对象以外,归档还可以对自定义的对象实现归档,需要注意的是,自定义的归档对象必须要实现NSCoding协议,实现里面的解码和编码的方法。
4. 什么是数据库?使用步骤?特点?
数据库是按照数据结构来组织、存储和管理数据的仓库。SQLite使用步骤:创建数据库、引入类库、获得沙盒路径、创建或打开数据库
SQLite比较原始,需要通过sql语句来创建表格,对数据进行操作,用起来比较麻烦,但是可控性强。
5. Core Data
Core Data是ios3以后引入的数据库持久化解决方案,是苹果官方推荐的,在使用的过程中不需要写sql语句,可以很方便的将数据存储到数据库中。正因为不需要要写sql语句,具体的功能已经被封装好了,因此可控性要弱一些。
5. 数据持久化方面用过哪些第三方类库?
FMDB,以OC的方式封装了SQLite的C语言的API。
优点:1. 更加面向对象,省去了很多冗余的C代码;
2. 对比苹果自带的CoreData框架,更加灵活和轻量级;
3. 提供了多线程安全的数据库操作方法,能有效的防止数据混乱。
6. XML可扩展标记语言extensible markup language
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是存储数据。
XML与HTML的设计区别?
XML的核心是数据,其重点是数据的内容。而HTML被设计用来显示数据,其重点是数据的显示。
XML和HTML语法区别?
HTML的标记不是所有的都需要成对出现,XML则要求所有的标记必须成对出现;
HTML标记不区分大小写,XML则大小敏感,即区分大小写。