iOS 常用四种数据存储方式
, ,
定义Possession:
NSString *name;//待归档类型
}
@implementation Possession
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoderencodeObject:nameforKey:@"name"]; }
-(void)initWithCoder:(NSCoder *)aDecoder{name=[[aDeCoder decodeObjectforKey:@"name"] retain];
}
归档操作:archiveRootObject:toFile: 即可。
NSString *path =[selfpossessionArchivePath];[NSKeyedArchiver archiveRootObject:allPossessions toFile: path ]
解压操作:allPossessions =[[NSKeyedUnarchiverunarchiveObjectWithFile:path] retain];
NSDictionary
保存数据:
NSUserDefaults *defaults=[NSUserDefaultsstandardUserDefaults];
NSString *name =@”default string“;[defaults setObject:firstName forKey:@"name"];
UIImage *image=[[UIImage alloc]initWithContentsOfFile:@"photo.jpg"];NSData *imageData = UIImageJPEGRepresentation(image, 100);//UIImage
读取数据:
NSUserDefaults *defaults=[NSUserDefaultsstandardUserDefaults];NSString *name = [defaults objectForKey:@"name"];//根据键值取出nameNSData *imageData = [defaults dataForKey:@"image"];UIImage *Image = [UIImage imageWithData:imageData];//NSData转换为UIImage
he domain mask:NSUserDomainMask
NSString *ourDocumentPath =[documentPaths objectAtIndex:0];
NSString *sandboxPath = NSHomeDirectory(); NSString *documentPath = [sandboxPath
因前面分析了!
录可能在未来发送的系统上发生改变。
NSString *FileName=[documentDirectorystringByAppendingPathComponent:fileName];//fileName就是保存文件的文件名
Link Binary Library(ies),#import"/usr/include/sqlite3.h"
NSArray*documentsPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);NSString *databaseFilePath=[[documentsPathsobjectAtIndex:0]stringByAppendingPathComponent:@"mydb"];
//上面两句已经比较熟悉了吧!//打开数据库if (sqlite3_open([databaseFilePath UTF8String], &database)==SQLITE_OK) {
NSLog(@"sqlite dadabaseisopened."); }
else{ return;}//打开不成功就返回
!
char *error;const char *createSql="create table(id integer primary keyautoincrement,name text)"; if (sqlite3_exec(database, createSql, NULL,NULL,&error)==SQLITE_OK) {
NSLog(@"create table is ok."); }
else {
}
:
const char *insertSql="insert intoaperson (name) values(‘gg’)";if (sqlite3_exec(database, insertSql, NULL, NULL, &error)==SQLITE_OK) {
NSLog(@"insert operation isok.");}
else {
NSLog(@"error: %s",error);
NSLog(@"error: %s",error);
}
const char *selectSql="selectid,namefrom a person";sqlite3_stmt *statement;if (sqlite3_prepare_v2(database,selectSql, -1, &statement,nil)==SQLITE_OK){
NSLog(@"select operation isok.");}
else {
sqlite3_free(error); }
while(sqlite3_step(statement)==SQLITE_ROW){int _id=sqlite3_column_int(statement, 0);NSString *name=(char*)sqlite3_column_text(statement,1);NSLog(@"row>>id %i, name %s",_id,name);}sqlite3_finalize(statement);:sqlite3_close(database);
NSString来接收从数据库取出的字符串。
,成功是奋斗的结果,而奋斗是成功的必经之路。