1. 如果后期需要增加數(shù)據(jù)庫中的字段怎么實現(xiàn)?如果不使用CoreData呢?
編寫SQL語句來操作原來表中的字段
1> 增加表字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段類型
2> 刪除表字段
ALTER TABLE 表名 DROP COLUMN 字段名
3> 修改表字段
ALTER TABLE 表名 RENAME COLUMN 舊字段名 TO 新字段名
2. SQLite數(shù)據(jù)存儲是怎么用?
1> 添加SQLite動態(tài)庫——libsqlite3.dylb
2> 導入主頭文件——#import <sqlite3.h>
3> 利用C語言函數(shù)創(chuàng)建、打開數(shù)據(jù)庫,編寫SQL語句
3.簡單描述下客戶端的緩存機制
1> 緩存可以分為:內(nèi)存數(shù)據(jù)緩存、數(shù)據(jù)庫緩存、文件緩存
2> 每次想獲取數(shù)據(jù)的時候:
? ? ?a、先檢測內(nèi)存中有無緩存
? ? ?b、再檢測本地有無緩存(數(shù)據(jù)庫/文件)
? ? ?c、最終發(fā)送網(wǎng)絡請求
? ? ?d、將服務器返回的網(wǎng)絡數(shù)據(jù)進行緩存(內(nèi)存、數(shù)據(jù)庫、文件),以便下次讀取
4.你實現(xiàn)過多線程的CoreData么?NSPersistentStoreCoordinator,NSManagedObjectContext,NSManagedObject中的哪些需要在線程中創(chuàng)建或者傳遞?你是用什么樣的策略來實現(xiàn)的?
CoreData性能并沒有SQL好
1> CoreData是對SQLite數(shù)據(jù)庫的封裝(SQLite是C語言,CoreData是OC語言)
?--NSManagedObject:實體對象(一個類對應一張表,一個對象對應表中的一條記錄)
?--NSPersistentStoreCoordinator:存儲器,決定了你的數(shù)據(jù)存儲在什么地方(SQLite、 ? ??
? ? XML、其他文件)
?--NSManagedObjectContext:操作數(shù)據(jù)庫(是一個單例)
2> CoreData中的NSManagedObjectContext在多線程中不安全,如果想要多線程訪問CoreData的話,最好的方法是一個線程一個NSManagedObjectContext。
3> 每個NSManagedObjectContext對象實例都可以使用同一個NSPersistentStoreCoordinator實例,這是因為NSManagedObjectContext會在使用NSPersistentStoreCoordinator前上鎖。