1、屬性列表
路徑:
NSArray * testPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [paths objectAtIndex:0];
NSString *fileName = [fileName stringByAppendingPathComponent:@"test.plist"];
寫:
NSArray *writtenList = [[NSArray alloc] init];
[writtenList writeToFile:fileName atomically:YES];
讀:
[writtenList writeToFile:fileName atomically:YES];
NSArray *readList = [[NSArray alloc] initWithContentsOfFile:fileName];
2、歸檔
讀:
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:fileName];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
TestObj *tObj = [unarchiver decodeObjectForKey:@"testKey"];
[unarchiver finishDecoding];
寫:
//overwrite
- (void)encodeWithCoder:(NSCoder *)aCoder {
}
-(id) initWithCoder:(NSCoder *)aDecoder {
}
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:tObj forKey:@"testKey"];
[archiver finishEncoding];
[data writeToFile:fileName atomically:YES];
3、數據庫sql
//數據庫操作
sqlite3 *database;
// const NSString * dbname = @"mydb"
int result;
//打開一個指定路徑的現有的數據庫,如果沒有則會新建一個db庫
result = sqlite3_open([myFile UTF8String], &database);
if (result != SQLITE_OK) {
sqlite3_close(database);
}
//創建一個db表
char *errorMsg;
NSString *sql_create_table = @"CREATE TABLE IF NOT EXISTS NONOTABLE 省略~~~~~~~~~~~~~";
int result1 ;
//sqlite_exec用了針對sqlite3運行任何不要返回數據的命令,它用於執行更新,插入和刪除。簡單來說,這個方法執行的都是一些無需返回數據(雖然我們可能獲取一個狀態值。)。
result1 = sqlite3_exec(database, [sql_create_table UTF8String], NULL, NULL, &errorMsg);
//檢索查詢操作
int result2 ;
sqlite3_stmt *statment;
NSString *sql_selected = @"查詢語句";
result2 = sqlite3_prepare_v2(database, [sql_selected UTF8String], -1, &statment, nil);
if(result2 == SQLITE_OK){
//單步操作
while (sqlite3_step(statment) == SQLITE_ROW) {
int row = sqlite3_column_int(statment, 0);
char * rpwData = sqlite3_column_text(statment, 1);
}
sqlite3_finalize(statment);
}
//綁定變量,既就是插入操作的一種變種,比如我麼那上面提到sqlite_exec可以執行插入操作,插入內容直接是寫在sql字竄裏,但是考慮到字竄涉及到無效的符號以及會一些嚴重的注入漏洞(比如以前聽過的引號符號)。
NSString *sql_bind = @"insert into foo value(?,?)";
result2 = sqlite3_prepare_v2(database, [sql_selected UTF8String], -1, &statment, nil);
if(result2 == SQLITE_OK){
sqlite3_bind_int(statment, 1, 235);
sqlite3_bind_text(statment, 2, "test", -1, nil);
sqlite3_finalize(statment);
}
if (sqlite3_step(statment) != SQLITE_DONE)
NSLog(@"error");
sqlite3_finalize(statment);
sqlite3_close(database);
4、coreData