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

相关推荐
卷心菜加农炮8 小时前
基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署
ios
北极象18 小时前
千问大模型接入示例
ios·iphone·qwen
ipad协议开发21 小时前
企业微信 iPad 协议应用机器人开发
ios·企业微信·ipad
QuantumLeap丶2 天前
《Flutter全栈开发实战指南:从零到高级》- 26 -持续集成与部署
android·flutter·ios
2501_915918412 天前
TCP 抓包分析在复杂网络问题中的作用,从连接和数据流层面理解系统异常行为
网络·网络协议·tcp/ip·ios·小程序·uni-app·iphone
二流小码农2 天前
鸿蒙开发:个人开发者如何使用华为账号登录
android·ios·harmonyos
wvy2 天前
Xcode 26还没有适配SceneDelegate的app建议尽早适配
ios
游戏开发爱好者82 天前
苹果 App 上架流程,结合 Xcode、CI 等常见工具
macos·ios·ci/cd·小程序·uni-app·iphone·xcode
前端老白2 天前
webview在微信小程序中,安卓加载失败,IOS正常加载
android·ios·微信小程序·webview
2501_915106322 天前
用 HBuilder 上架 iOS 应用时如何管理Bundle ID、证书与描述文件
android·ios·小程序·https·uni-app·iphone·webview