[size=small]
檔案儲存策略:
一般有三中方法:1,屬性列表,2,物件歸檔,3,iphone的嵌入式資料庫庫(sqlite3)
1,屬性列表
儲存檔案:
//獲取文件目錄,nsdocumentdirectory表示我們查詢documents目錄的路徑,nsuserdomainmask表示我們的搜尋範圍只能在我們的應用程式沙盒當中,
nsarray *path=nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
//每個應用程式只有乙個路徑,所以說我們可以從陣列的0位置取得路徑
nsstring *documentdirectory=[path objectatindex:0];
//在獲得的路徑當中生成乙個thefile.txt檔案,filename將包含thefile.txt的完整路徑
nsmutablearray *array=[[nsmutablearray alloc] init];
[array addobject:@"data1"];
[array addobject:@"data2"];
[array addobject:@"data3"];
[array writetofile:documentdirectory atomically:yes];
如果想獲取臨時檔案的目錄可以使用下面的語句:
nsstring *temppath=nstemporarydirectory();
讀取檔案:
nsarray *paths=nssearchpathfordirectoriesindomains(nsdocumentdirectory,nsuserdomainmask,yes);
nsstring *documentdirectory=[path objectatindex:0];
if ([[nsfilemanager defaultmanager] fileexistsatpath: documentdirectory])
-(id)initwithcoder:(nscoder *)adecoder
return self;
}//實現nscopying
-(id) copywithzone:(nszone *)zone
對資料進行歸檔
//建立乙個nsmutabledata例項,用來包含編碼的資料
nsmutabledata *data=[nsmutabledata alloc] init];
//建立乙個歸檔物件,該歸檔物件將歸檔的資料儲存在data裡
nskeyedarchiver *archiver=[[nskeyedarchiver alloc] initforwritingwithmutabledata:data]
[archiver encodeobject:myobject forkey:@"keyvaluestring"];
//完成歸檔
[archiver finishencoding];
//將data裡面歸檔的資料寫入檔案 ,寫入檔案成功為success,失敗時為no;
bool success=[data writetofile:@"/path/to/archive" atomically:yes];
[archiver release];
[data release];
對資料物件取消歸檔
//從歸檔檔案建立乙個nsdata例項
nsdata *data=[[nsdata alloc] initwithcontentsoffile:path];
//建立乙個nskeyedunarchiver,對資料進行解碼
nsikeyedunarchiver *unarchiver=[[nskeyedunarchiver alloc] initforreadingwithdata:data];
//通過key值解碼物件
self.object=[unarchiver decodeobjectforkey:@"keyvaluestring"];
[unarchiver finishdecoding];
[unarchiver release];
[data release];
3.sqlite3
建立或開啟資料庫
sqlite3 *database;
//如果result等於常量sqlite_ok,則表示已經開啟(資料庫檔案路徑必須作為c字串處理)
int result=sqlite3_open("/path/database/file",&database);
char *errormsg;
const char *createsql-"create table if not exits people(id integer primary key autoincrement,field_data text)";
int result=sqlite3_exec(database,createsql,null,null,&errormsg);[/size]
sqlite3相關知識點
開啟 函式原型 int sqlite3 open const char filename,sqlite3 ppdb 函式功能 開啟乙個資料庫 若該資料庫檔案不存在,則自動建立。開啟或者建立資料庫的命令會被快取,直到這個資料庫真正被呼叫的時候才會被執行。輸入引數 filename,待開啟的資料庫檔名稱...
sqlite3相關知識點(3)
執行sql 函式原型 int sqlite3 get table sqlite3 pdb,const char sql,char presult,int rowcount,int columncount,char errmsg 函式功能 執行sql 語句,通過一維陣列返回結果 一般用於資料記錄查詢 ...
使用sqlite3 模組操作sqlite3資料庫
python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...