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

相关推荐
开心就好202529 分钟前
全面介绍iOS开发工具:Xcode、AppCode、CocoaPods、Fastlane和Git
后端·ios
懋学的前端攻城狮44 分钟前
数据持久化与缓存策略:在离线与在线间架起桥梁
ios·swift
~央千澈~2 小时前
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
ios
SameX4 小时前
iOS 足迹 App 的成就系统,我推倒重做了一次——踩了3个坑之后
ios
SameX5 小时前
我做了一个把专注计时变成「声音护照」的 iOS App,聊聊数据可视化和成长系统的设计思路
ios
SameX5 小时前
我用 SpriteKit 给存钱罐装了个物理引擎
ios
开心就好20255 小时前
Charles配置HTTP和HTTPS抓包完整指南
后端·ios
JarvanMo5 小时前
7 个开源 iOS 应用,让你成为更好的开发者
前端·ios
白玉cfc5 小时前
OC底层原理:alloc&init&new
c++·macos·ios·objective-c·xcode
ZZH_AI项目交付6 小时前
一个 iOS 埋点 SDK 从 0 到 1,再到真实项目接入打磨
ios·app·ai编程