1. 如果后期需要增加數據庫中的字段怎么實現,如果不使用CoreData呢?
編寫SQL語句來操作原來表中的字段:
-
增加表字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段類型
-
刪除表字段
ALTER TABLE 表名 DROP COLUMN 字段名
-
修改表字段
ALTER TABLE 表名 RENAME COlUMN 舊字段名 TO 新字段名
2. SQLite數據存儲是怎么用?
- 添加SQLite動態庫:
libsqlite3.tbd
; - 導入主頭文件:
#import<sqlite3.h>
; - 利用C語言函數創建\打開數據庫,編寫SQL語句。
3. 簡單描述下客戶端的緩存機制?
- 緩存可以分為:內存數據緩存、數據庫緩存、文件緩存
- 每次想獲取數據的時候
- 先檢測內存中有無緩存
- 再檢測本地有無緩存(數據庫\文件)
- 最終發送網絡請求
- 將服務器返回的網絡數據進行緩存(內存、數據庫、文件),以便下次讀取
4. 你實現過多線程的CoreData么?NSPersistenStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在線程中創建或者傳遞?你是用什么樣的策略來實現的?
- CoreData是對SQLite的數據庫的封裝
- CoreData中的NSManagedObjectContext在多線程中不安全
- 如果想要多線程訪問CoreData的話,最好的方法是一個線程一個NSManagedObjectContext
- 每個NSManagedObjectContext對象實例都可以使用同一個NSPersistenStoreCoordinator實例,這是因為NSManagedObjectContext會在使用NSPersistenStoreCoordinator前上鎖
5. CoreData數據遷移
詳情參考: 關于大數據量下Core Data的數據遷移