zoukankan      html  css  js  c++  java
  • iOS面试题02-数据存储

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

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

    1>增加表字段

    ALETER TABLE 表名 ADD COLUMN 字段名 字段类型;

    2>删除表字段

    ALETER TABLE 表名 DROP COLUMN 字段名

    3>修改表字段

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

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

    回答: 1>增加SQLite动态库:libsqlite3.dylib

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

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

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

    回答:1.缓存可以分为:内存数据缓存、数据库缓存、文件缓存

             2.每次想获取数据的时候

             1>先检测内存中有无缓存

             2>再检测本地有无缓存(数据库/文件)

             3>最终发送网络请求

             4>将服务器返回的网络数据进行缓存(内存、数据库、文件)以便下次读取

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

    回答:1>CoreData是对SQLite数据库的封装

            2>CoreData中的NSManageredObject在多线程中不安全

        3>如果想要多线程访问CoreData的话,最好的方法是一个线程一个NSManagedObjectContext

            4>每个NSManagedObjectContext对象实例都可以使用同一个NSPersistentStoreCoordinator实例,这是因为NSManagedObjectContext会在使用NSPersitentStoreCoordinator前上锁

         附: FMDB:OC封装C语言的SQLite,编写SQL语句

          CoreData:OC封装C语言的SQLite,不用编写任何SQL语句,自动根据对象类型和属性名生成对应的SQL语句

    5.Core Data数据迁移

    具体可以看这篇博客:http://blog.csdn.net/jasonblog/article/details/17842535

  • 相关阅读:
    Tengine 常用模块使用介绍
    linux curl 命令详解,以及实例
    win7或win2008 R2 被远程登录日志记录 系统日志
    PHP 弹出文件下载
    JavaScript 的性能优化:加载和执行
    网店转化率太低,你该怎么办?
    rpm安装PostgreSQL
    failed to load selinux policy freezing
    Scanner类nextInt方法的使用注意点
    tomcat支持https的历程
  • 原文地址:https://www.cnblogs.com/linmingjun/p/4786958.html
Copyright © 2011-2022 走看看