iOS 面試題錦集(四)——數據存儲

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的數據遷移

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容