iOS 数据存储

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值