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

  • 相关阅读:
    [C++] socket
    [C++] socket
    2014-3-16 星期天 晴[改变生活规律,稳中求进]
    [C++] socket
    [C++] socket
    [ACM_水题] Yet Another Story of Rock-paper-scissors [超水 剪刀石头布]
    easyui datagrid如何获取到每行的文本框
    JS传递数组到后台
    如何将js的object对象传到后台--->JavaScript之对象序列化
    EasyUI常用控件禁用方法
  • 原文地址:https://www.cnblogs.com/linmingjun/p/4786958.html
Copyright © 2011-2022 走看看