面试题 -- iOS数据存储

文章目录

一、如果后期需要增加数据库中的字段怎么实现,如果不使用CoreData呢?

编写SQL语句来操作原来表中的字段

1、 增加表字段

ALTER TABLE 表名 ADD COLUMN 字段名 字段类型

2、删除表字段

ALTER TABLE 表名 DROP COLUMN 字段名

3、 修改表字段

ALTER TABLE 表名 RENAME COLUMN 旧字段名 TO 新字段名

二、SQLite 数据存储是怎么用?

1、 添加SQLite 动态库

2、 导入主头文件,#import <sqlite3.h>

3、利用C语言函数创建/打开数据库,编写SQL语句

三、简单描述下客户端的缓存机制?

  1. 缓存可以分为:内存数据缓存、数据库缓存、文件缓存
  2. 每次想获取数据的时候
    1) 先检测内存中有无缓存
    2)再检测本地有无缓存(数据库\文件)
    3)最终发送网络请求
    4) 将服务器返回的我忘了数据进行缓存(内存、数据库、文件),以便于下次读取

四、实现过多线程的Core Data 么?NSPersistentStoreCoordinator,NSmanagedObjectContext 和 NSManageObject 中哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?

  1. CoreData是对SQLite数据库的封装
  2. CoreData中的NSManagedObjectContext 在多线程中不安全
  3. 如果想要多线程访问CoreData 的话,最好的方法是一个线程一个NSManagedObjectContext
  4. 每个NSManagedObjectContext 对象实例都可以使用同一个NSPersistentStoreCoordinator 实例, 这是因为NSManagedObjectContext 会在使用 NSPersistentStoreCoordinator 前上锁

五、CoreData实例含义

Person: NSManagedObject:实体对象(1个类对应1张表,1个对象对应表中的1条记录)

NSPersistentStoreCoordinator:存储器,决定你的数据存储在什么地方(SQLite\XML\其它文件)

NSManagedObjectContext:操作数据库

相关推荐
VicLi9 小时前
把常用 iOS 调试操作放进一个 macOS 控制台: iCATBox
ios
茶底世界之下9 小时前
雾景需要更强反差吗?用 Awaking 检查树影与雾气的平衡
ios
终端安全笔记11 小时前
下一个大版本要动的三处:更新指令、传输要求、策略写法
网络安全·ios·1024程序员节·移动设备管理
法的空间13 小时前
AI 编程时代,为什么 Dart 分析会拖慢大型项目的开发
android·flutter·ios
season_zhu13 小时前
Skills For Real Engineers 系列之二:grill,把需求想清楚,也别把自己问进死胡同
ios·ai编程
美狐美颜SDK开放平台1 天前
准备开发直播APP?视频美颜SDK接入前的十项检查清单
android·ios·音视频·直播美颜sdk·视频美颜sdk
承渊政道2 天前
iOS远程控制电脑用什么好?iPhoneiPad远程控制Windows电脑最佳方案2026横评
windows·ios·远程控制·1024程序员节·iphone ipad
茶底世界之下2 天前
彩色建筑适合转黑白吗?用 Awaking 检查颜色消失后的层次
ios
黑科技iOS上架2 天前
App Store 26年10月新应用审核放缓大量应用不进审
ios·审核
OxYGC2 天前
手机为什么能“自动跳过“开屏广告?李跳跳、GKD 与 iOS 代理软件原理盘点
android·ios·开屏广告·广告屏蔽