美文网首页iOS面试题iOS ReviewiOS精品文章-面试
iOS 面试题锦集(四)——数据存储

iOS 面试题锦集(四)——数据存储

作者: KyneChen | 来源:发表于2016-09-06 15:42 被阅读423次

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

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

    • 增加表字段

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

    • 删除表字段

      ALTER TABLE 表名 DROP COLUMN 字段名

    • 修改表字段

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

    2. SQLite数据存储是怎么用?

    1. 添加SQLite动态库:libsqlite3.tbd
    2. 导入主头文件:#import<sqlite3.h>
    3. 利用C语言函数创建\打开数据库,编写SQL语句。

    3. 简单描述下客户端的缓存机制?

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

    4. 你实现过多线程的CoreData么?NSPersistenStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?

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

    5. CoreData数据迁移

    详情参考: 关于大数据量下Core Data的数据迁移

    相关文章

      网友评论

        本文标题:iOS 面试题锦集(四)——数据存储

        本文链接:https://www.haomeiwen.com/subject/ipvdettx.html