應用沙盒目錄的常見獲取方式
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....