數(shù)據(jù)存儲

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前上鎖。

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

推薦閱讀更多精彩內(nèi)容