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> 導(dǎo)入主頭文件——#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)絡(luò)請求
? ? ?d予权、將服務(wù)器返回的網(wǎng)絡(luò)數(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:實體對象(一個類對應(yīng)一張表,一個對象對應(yīng)表中的一條記錄)
?--NSPersistentStoreCoordinator:存儲器库菲,決定了你的數(shù)據(jù)存儲在什么地方(SQLite账忘、 ? ??
? ? XML、其他文件)
?--NSManagedObjectContext:操作數(shù)據(jù)庫(是一個單例)
2> CoreData中的NSManagedObjectContext在多線程中不安全熙宇,如果想要多線程訪問CoreData的話鳖擒,最好的方法是一個線程一個NSManagedObjectContext。
3> 每個NSManagedObjectContext對象實例都可以使用同一個NSPersistentStoreCoordinator實例烫止,這是因為NSManagedObjectContext會在使用NSPersistentStoreCoordinator前上鎖蒋荚。