iOS本地資料訪問,看這裡就夠了

2021-08-01 17:26:19 字數 4559 閱讀 8593

應用沙盒目錄的常見獲取方式

tmp:nsstring *tmp = nstemporarydirectory();

library/caches:(跟documents類似的2種方法)

library/preference:通過nsuserdefaults類訪問該目錄下的設定資訊

xml屬性列表(plist)歸檔

preference(偏好設定)

nskeyedarchiver歸檔(nscoding)

sqlite3

core data

屬性列表-nsdictionary的儲存和讀取過程

屬性列表-nsdictionary的儲存和讀取過程

很多ios應用都支援偏好設定,比如儲存使用者名稱、密碼、字型大小等設定,ios提供了一套標準的解決方案來為應用加入偏好設定功能

每個應用都有個nsuserdefaults例項,通過它來訪問偏好設定

比如,儲存使用者名稱、字型大小、是否自動登入

儲存檔案內容

歸檔乙個nsarray物件到documents/array.archive

nsarray *array = [nsarray arraywithobjects:@」a」,@」b」,nil];

[nskeyedarchiver archiverootobject:array tofile:path];

nsarray *array = [nskeyedunarchiver unarchiveobjectwithfile:path];
訪問過程

歸檔person物件

@inte***ce

person : nsobject@property (nonatomic, copy) nsstring *name;

@property (nonatomic, assign) int age;

@property (nonatomic, assign) float height;

@end

@implementation person

- (void)encodewithcoder:(nscoder *)encoder

- (id)initwithcoder:(nscoder *)decoder

@end

person *person = [[[person alloc] init] autorelease];

person.name = @"hosea";

person.age = 22;

person.height = 1.83f;

[nskeyedarchiver archiverootobject:person tofile:path];

person *person = [nskeyedunarchiver unarchiveobjectwithfile:path];
nskeyedarchiver-歸檔物件的注意
- 如果父類也遵守了nscoding協議,請注意:

- 應該在encodewithcoder:方法中加上一句

[super

encodewithcode:encode];

確保繼承的例項變數也能被編碼,即也能被歸檔

- 應該在initwithcoder:方法中加上一句

self = [super

initwithcoder:decoder];

確保繼承的例項變數也能被解碼,即也能被恢復

歸檔nsdata

利用歸檔實現深複製

// 臨時儲存person1的資料

nsdata *data = [nskeyedarchiver archiveddatawithrootobject:person1];

// 解析data,生成乙個新的person物件

person *person2 = [nskeyedunarchiver unarchiveobjectwithdata:data];

// 分別列印記憶體位址

深複製原理

sqlite3簡介

關閉資料庫:sqlite3_close(db);

執行創表語句

char *errormsg;  // 用來儲存錯誤資訊

char *sql = "create

table

ifnot

exists t_person(id

integer primary key autoincrement, name

text, age integer);";

int result = sqlite3_exec(db, sql, null, null, &errormsg);

**解析:

帶佔位符插入資料

char *sql = "insert

into t_person(name, age) values(?, ?);";

sqlite3_stmt *stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, null) == sqlite_ok)

if (sqlite3_step(stmt) != sqlite_done)

sqlite3_finalize(stmt);

查詢資料

char *sql = "select

id,name,age from t_person;";

sqlite3_stmt *stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, null) == sqlite_ok)

}sqlite3_finalize(stmt);

core data簡單介紹

模型檔案

從應用程式包中載入模型檔案

nsmanagedobjectmodel *model = [nsmanagedobjectmodel mergedmodelfrombundles:nil];
nspersistentstorecoordinator *psc = [[[nspersistentstorecoordinator alloc] initwithmanagedobjectmodel:model] autorelease];
nsstring *docs = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];
新增資料

查詢資料

建立nsmanagedobject的子類

person *person = [nsentitydescription insertnewobjectforentityforname:@"person" inmanagedobjectcontext:context];

person.name = @"hosea";

person.age = [nsnumber numberwithint:22];

card *card = [nsentitydescription insertnewobjectforentityforname:@」card" inmanagedobjectcontext:context];

card.no = @」4414245465656";

person.card = card;

弱網測試看這裡就夠了

在網際網路的時代裡,網路訊號扮演著乙個十分重要的角色,可以毫不誇張的說,對於部分人來講,失去了網路訊號就是失去了全世界,在網際網路產品中網路同樣影響著使用者對產品的體驗,所以身為測試開發人員對於產品 無論是b s還是c s架構 的弱網測試就顯得尤為重要。現實環境中什麼環境會出現弱網?我們在地鐵 車庫...

MySQL 資料庫優化,看這篇就夠了

資料庫優化一方面是找出系統的瓶頸,提高mysql資料庫的整體效能,而另一方面需要合理的結構設計和引數調整,以提高使用者的相應速度,同時還要盡可能的節約系統資源,以便讓系統提供更大的負荷.筆者將優化分為了兩大類,軟優化和硬優化,軟優化一般是運算元據庫即可,而硬優化則是操作伺服器硬體及引數設定.2.1....

MySQL 資料庫優化,看這篇就夠了

資料庫優化一方面是找出系統的瓶頸,提高mysql資料庫的整體效能,而另一方面需要合理的結構設計和引數調整,以提高使用者的相應速度,同時還要盡可能的節約系統資源,以便讓系統提供更大的負荷.筆者將優化分為了兩大類,軟優化和硬優化,軟優化一般是運算元據庫即可,而硬優化則是操作伺服器硬體及引數設定.2.1....