iOS面试题02-数据存储
1.如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?
回答:编写SQL语句来操作原来表中的字段
1>增加表字段
ALETER TABLE 表名 ADD COLUMN 字段名 字段类型;
2>删除表字段
ALETER TABLE 表名 DROP COLUMN 字段名
3>修改表字段
ALETER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名
2.SQLite数据存储是怎么用?
回答: 1>增加SQLite动态库:libsqlite3.dylib
2>导入主头文件:#import <sqlite3.h>
3>利用C语言函数创建/打开数据库,编写SQL语句
3.简单描述下客户端的缓存机制?
回答:1.缓存可以分为:内存数据缓存、数据库缓存、文件缓存
2.每次想获取数据的时候
1>先检测内存中有无缓存
2>再检测本地有无缓存(数据库/文件)
3>最终发送网络请求
4>将服务器返回的网络数据进行缓存(内存、数据库、文件)以便下次读取
4.你实现过多线程的Core Data么?NSPersistenStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?
回答:1>CoreData是对SQLite数据库的封装
2>CoreData中的NSManageredObject在多线程中不安全
3>如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext
4>每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例,这是因为NSManagedObjectContext会在使用NSPersitentStoreCoordinator前上锁
附: FMDB:OC封装C语言的SQLite,编写SQL语句
CoreData:OC封装C语言的SQLite,不用编写任何SQL语句,自动根据对象类型和属性名生成对应的SQL语句
5.Core Data数据迁移
具体可以看这篇博客:http://blog.csdn.net/jasonblog/article/details/17842535
iOS面试题02-数据存储的更多相关文章
- iOS开发之CoreData数据存储
iOS开发之CoreData数据存储 参考资料:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreD ...
- iOS学习之应用数据存储1-属性列表、偏好设置、NSKeyedArchiver归档
iOS应用数据存储的常用方式(持久化方式) 属性列表(plist)归档(XML文件) Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3 Core ...
- iOS APP之本地数据存储(译)
最近工作中完成了项目的用户信息本地存储,查阅了一些本地存储加密方法等相关资料.期间发现了一个来自印度理工学院(IIT)的信息安全工程师的个人博客,写了大量有关iOS Application secur ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- iOS沙盒及数据存储
时间久了容易忘,针对沙盒的相关实用技巧做一个记录和整理. 一.iOS数据存储常用方式 1.XML属性列表(plist) 不是所有对象都可以写入: 2.Preference(偏好设置) 本质还是通过“p ...
- IOS的四种数据存储方式及优劣
IOS有四种经常使用数据存储方式: 第一种方法:用NSUserDefaults存储配置信息 NSUserDefaults被设计用来存储设备和应用的配置信息.它通过一个工厂方法返回默认的.也是最经常使用 ...
- iOS笔试题02
1. Difference between shallow copy and deep copy? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2 ...
- iOS面试题 02
在面试的时候,面试官问我,“你对内存管理了解的多吗?” 我忘了当时是怎么回答的了,但是,肯定是一时没想起来怎么回答. 1.谁创建谁释放 2.autoreleasepool 3.retain,copy, ...
- iOS开发:本地数据存储-NSUserDefaults
Getting Default Values arrayForKey(_:) boolForKey(_:) dataForKey(_:) dictionaryForKey(_:) floatForKe ...
随机推荐
- (译) 《Javascript 24条最佳实践》
(摘录) <Javascript 24条最佳实践> 自己一直偏向于实用主义,不是学院派,不是学究派,只讲究把东西能够很好的做出来,但经过一段时间的开发工作当自己总结出来一些东西时,觉得挺有 ...
- DLR、ASTER GDEM、SRTM3、GMTED2010等5种全球高程数据对比
目前网上有多种全球高程数据,国内在这方面也进步喜人,资源三号目前已放出来的卫片给了不少惊喜,其高程数值得期待.但资源三号的高程数据放出来还需等待,过去两三年全球高程数据发展相当迅猛,DLR放出了相 ...
- poj2656---求一列数中最大数的序数而且在前面输入的更优先
#include<stdio.h> #include<stdlib.h> int main() { int n,i; while(scanf("%d",&a ...
- 如何阅读mysql源码
在微博上问mysql高手,如何阅读mysql 源码大致给了下面的一些建议: step 1,知道代码的组织结构(官方文档http://t.cn/z8LoLgh: Step2: 尝试大致了解一条sql涉及 ...
- #include <iostream>
1 static_assert 2 std::nothrow 3 std::ref() 4 std::string 1 static_assert 执行编译时断言检查 语法 static_assert ...
- 项目代码摘抄,dot的用法之1
function searchTags() { var list = $('#tags-list-select option:selected').val(); console.log(list); ...
- saiku之固定维度(必选维度)
工作中遇到的问题,记录下来方便以后查找. 在saiku中如何设定固定维度? 找到WorkspaceDropZone.js文件,在synchronize_query: function(){}方法中的“ ...
- HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)
题解见X姐的论文 矩阵乘法递推的优化.仅仅是mark一下. .
- linux 分割文件
import os import sysimport subprocess if len(sys.argv)<3 : print 'usage: filenum filename' file_n ...
- BZOJ 2716: [Violet 3]天使玩偶( CDQ分治 + 树状数组 )
先cdq分治, 然后要处理点对答案的贡献, 可以以询问点为中心分成4个区域, 然后去掉绝对值(4种情况讨论), 用BIT维护就行了. --------------------------------- ...