iOS技术面试04:数据存储
1. 如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?
编写SQL语句来操作原来表中的字段
1> 增加表字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段类型;
2> 删除表字段
ALTER TABLE 表名 DROP COLUMN 字段名;
3> 修改表字段
ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名;
2. SQLite数据存储是怎么用?
1> 添加SQLite动态库:
2> 导入主头文件:#import <sqlite3.h>
3> 利用C语言函数创建\打开数据库,编写SQL语句
3.简单描述下客户端的缓存机制?
- 缓存可以分为:内存数据缓存、数据库缓存、文件缓存
- 每次想获取数据的时候
1> 先检测内存中有无缓存
2> 再检测本地有无缓存(数据库\文件)
3> 最终发送网络请求
4> 将服务器返回的网络数据进行缓存(内存、数据库、文件), 以便下次读取
4.你实现过多线程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?
1> CoreData是对SQLite数据库的封装
2> CoreData中的NSManagedObjectContext在多线程中不安全
3> 如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext
4> 每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例,这是因为NSManagedObjectContext会在便用NSPersistentStoreCoordinator前上锁
5 什么是数据持久化?
plist,偏好设置,键值归档,sqlite3,core data五种。前面4种,都只是存oc类型的对象数据,比如:NSNumber NSString NSData NSArray NSDictionary等,而数据库呢,首先是查有没有那个库,没有则创建一个库,
然后在库里面创建表,在表里面再进行具体的数据存储,最后还要关闭数据库,数据库一般是用c写,但苹果他有自己的一个库,就叫fmdb ,是oc 版本的,
用起来更加面相对象,也是c 封装后的,前面4种都是普通对象类型,而core data不是,可以存的范围很广,但不太好操作,稳定性差,不是一个库,只是一个文件罢了
6数据传值怎么传,又有哪些方式?
block,通知,代理,属性,单例等。
相关文章
- iOS社交app技术合伙人笔试题
- 从几个开源项目浅谈IOS视频流输出方案
- ios 修改导航条返回按钮
- 今日头条面试——iOS开发面试题
- 2022主流技术 Appium+IOS 自动化测试环境搭建
- iOS开发技巧 - 使用和定制开关控件(UISwitch)
- ios开发学习笔记
- iOS活体人脸识别的Demo和一些思路
- [其它]iOS 12.2支持电信VoLTE了,中国电信教你如何开通:只要三步
- SwiftUI iOS 开源组件之 按压效果button(教程含源码)
- [译] 揭秘 iOS 布局
- iOS开发ARC内存管理技术要点--ARC主要提供了4种修饰符,他们分别是:__strong,__weak,__autoreleasing,__unsafe_unretained
- iOS程序员应该专注于哪些基础知识,如何看待增强现实,机器学习或视频游戏等新技术
- iOS-制作Framework
- iOS 8 CloudKit上手教程
- Unity 之 接入IOS内购过程解析【文末源码】
- iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
- iOS之UI--微博个人详情页