面试题 -- 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:操作数据库

相关推荐
ii_best9 小时前
按键精灵手机端开发安卓版实战:手写一个可最小化、可拖动的「运行日志悬浮窗」(附完整 源码 + 踩坑记录)
android·ios·智能手机·自动化·ai编程·按键精灵
美狐美颜SDK开放平台11 小时前
Android与iOS直播APP美颜有什么区别?视频美颜SDK开发详解
android·ios·音视频·视频美颜sdk
传奇开心果编程2 天前
【SwiftUI入门练中学】第7课 动画与手势:让界面更灵动
学习·macos·ui·ios·swiftui·swift
知潮网2 天前
发售刚十天,9999 元的 iPhone 18 Pro 解锁就重启
ios·iphone
2501_916007472 天前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
传奇开心果编程2 天前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
可乐鸡翅yeah_2 天前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
00后程序员张3 天前
苹果App Store上架指南:费用、原理与步骤详解
android·ios·小程序·https·uni-app·iphone·webview
黑科技iOS上架3 天前
Unity3D游戏过审App Store4.3机审实战
ios·审核·ios混淆·执行程序差异化
用户38034165882973 天前
控制中心一键后台录音:我被自己的 Spike 骗了两次
ios·swift