1. 如果后期需要增加數(shù)據(jù)庫中的字段怎么實(shí)現(xiàn)皇帮,如果不使用CoreData?
編寫SQL語句來操作原來表中的字段
1> 增加表字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段類型;
2> 刪除表字段
ALTERTABLE 表名 DROP COLUMN 字段名;
3> 修改表字段
ALTER TABLE 表名 RENAME COLUMN 舊字段名 TO 新字段名;
2. SQLite數(shù)據(jù)存儲(chǔ)怎么用?
1> 添加SQLite動(dòng)態(tài)庫:libsqlite3.dylib
2> 導(dǎo)入主頭文件:#import <sqlite3.h>
3> 利用C語言函數(shù)創(chuàng)建\打開數(shù)據(jù)庫,編寫SQL語句
3. 簡單描述下客戶端的緩存機(jī)制银舱?
- 緩存可以分為:內(nèi)存數(shù)據(jù)緩存、數(shù)據(jù)庫緩存咖驮、文件緩存
- 每次想獲取數(shù)據(jù)的時(shí)候
1> 先檢測內(nèi)存中有無緩存
2> 再檢測本地有無緩存(數(shù)據(jù)庫\文件)
3> 最終發(fā)送網(wǎng)絡(luò)請(qǐng)求
4> 將服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行緩存(內(nèi)存捍掺、數(shù)據(jù)庫、文件)靶擦,以便下次讀取
4. 你實(shí)現(xiàn)過多線程的Core Data么腮考?NSPersistentStoreCoordinator,NSManagedObjectContext 和 NSManagedObject 中的哪些需要在線程中創(chuàng)建或者傳遞雇毫?你是用什么樣的策略來實(shí)現(xiàn)的?
Person : NSManagedObject :實(shí)體對(duì)象 (1個(gè)類對(duì)應(yīng)1張表踩蔚,1個(gè)對(duì)象對(duì)應(yīng)表中的1條記錄)棚放,繼承NSManagedObject 會(huì)生成相應(yīng)的表
NSPersistentStoreCoordinator :存儲(chǔ)器,決定了你的數(shù)據(jù)存儲(chǔ)在什么地方(SQLite\XML\其他文件)
NSManagedObjectContext :操作數(shù)據(jù)庫
1> CoreData是對(duì)SQLite數(shù)據(jù)庫的封裝馅闽,性能不好飘蚯,會(huì)產(chǎn)生冗余的
2> CoreData中的NSManagedObjectContext在多線程中不安全
3> 如果想要多線程訪問CoreData的話,最好的方法是一個(gè)線程一個(gè)NSManagedObjectContext
4> 每個(gè)NSManagedObjectContext對(duì)象實(shí)例都可以使用同一個(gè)NSPersistentStoreCoordinator實(shí)例福也,這是因?yàn)镹SManagedObjectContext會(huì)在使用NSPersistentStoreCoordinator前上鎖局骤。