1.Plist文件
2.NSUserDefaults 单例(存放程序的配置信息)
3.归档(序列化存储,可以存放自定义的对象数据)
4.数据库(移动端SQLite3,CoreData,FMDB)
终端创建文件: vim 文件名 esc :wq 回车
NSUserDefaults
//
获取单例
//
工程建好后,就会生成一个自己的偏好配置文件
//
不可以直接存储自定义的对象数据
//
数组,字符串,字典,基本数据类型
都可以直接通过方法存入
NSUserDefaults
*defaults=[
NSUserDefaults
standardUserDefaults
];
//1.
写数据
NSString
*str=
@"123123"
;
[defaults
setObject
:str
forKey
:
@"123123"
];
//
立即同步数据到文件中
[defaults
synchronize
];
//2.
取数据
str=[defaults objectForKey:@"123123"];
NSLog(@"%@",str);
//3.
移除某个
key value
//[defaults removeObjectForKey:@"123123"];
//str=[defaults objectForKey:@"123123"];
NSLog
(
@"%@"
,str);
//4.
重置文件
(
清除缓存
)
//[NSUserDefaults resetStandardUserDefaults] ;
//5.
打印所有键值对
//NSLog(@"%@",defaults.dictionaryRepresentation);
NSDictionary *dict=defaults.dictionaryRepresentation;
[dict writeToFile:@"/Users/xywzxw/Desktop/dict.plist" atomically:YES];
归档
Person *person = [[Person alloc]init];
person.name=
@"Tom";
person.age=
11
;
person.sex=
@"
男
";
//
归档对象
NSData *personData=[NSKeyedArchiver archivedDataWithRootObject:person];
//NSLog(@"%@",personData);
//
如果查看结构,可以添加
.plist
后缀
[personData writeToFile:
@"/Users/xywzxw/Desktop/OC/
归档
/personData"
atomically:
YES];
//
解档
//NSData *personData=[NSData dataWithContentsOfFile:@"/Users/xywzxw/Desktop/OC/
归档
/personData"];
//Person *per=[NSKeyedUnarchiver unarchiveObjectWithData:personData];
//
多个对象归档
Person
*person1=[[
Person
alloc
]
init];
person1.
name
=
@"Jone";
person1.
age
=
20;
person1.
sex
=
@"
女
";
NSDictionary
*dict=
@{
@"name"
:
@"Tom"
};
//
把对象转换成
data
NSMutableData
*data=[
NSMutableData
data];
//
生成一个归档对象
//data
是编码后对象数据的容器,开始归档后调用
encodeObject
:
forKey
:这个方法,系统会自动吧转码后的数据存入到
data
,归档完成后,必须调用
NSKeyedArchiver
*achiver=[[
NSKeyedArchiver
alloc
]
initForWritingWithMutableData:data];
//
编码
person
对象
[achiver
encodeObject
:person1
forKey
:
@"person"];
//
编码字典对象
[achiver
encodeObject
:dict
forKey
:
@"dict"];
//
结束归档
[achiver
finishEncoding];
NSLog
(
@"%@",data);
Plist
NSArray
*array =
@[
@"one"
,
@"two"
,
@"three"
];
NSString
*filePath =
@"/Users/xywzxw/Desktop/OC/Plist
文件
/test.plist";
NSDictionary
*dict=
@{
@"name"
:
@"zxw"
};
[dict
writeToFile
:filePath
atomically
:
YES];
//
写文件
//Plist
文件的后缀名是
.plist
//Plist
又叫属性列表
//Plist
文件的根节点类型只能是数组或字典
//Plist
文件支持的数据类型
:Array
,
Dictionary
,
Boolean
,
String,Data,Date,Number 7
种
//Plist
文件实际上就是
XML
格式的数据
//atomically
传
yes
表示传文件时,先会把数据写到一个副本中,等数据全部写入后,再放到目标路径下
BOOL
writeResult = [array
writeToFile
:filePath
atomically
:
YES];
NSLog
(
@"%d",writeResult);
//
取数据
//
???????把一个可变字典存入
Plist
文件后,再取出来之后,这个对象是可变的还是不可变的
array = [
NSArray
arrayWithContentsOfFile:filePath ];
NSLog
(
@"%@",array);
//
对字符串直接进行文件写入,只会把数据存入到一个文本文件中
//NSString *string=@"Hello";
//[string writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
SQLite
sqlite3
*database=
nil;
const
char
*filename=
"/Users/xywzxw/Desktop/OC/SQLite/data.db";
//
打开数据库
sqlite3_open(filename,&database);
//1.
数据库操作句柄
//2.sql
语句
//3.sql
语句执行后的回调函数
//4.void*
在
C
语言中,可以只带任意类型的指针,相当于
OC
的
id
//5.
错误信息
const
char
*sql=
"create table if not exists User(id integer)";
//
通过
OC
字符串构造
Sql
语句
NSString
*string=[
NSString
stringWithFormat
:
@"insert into User values('%d')"
,
10];
const
sql1=string.
UTF8String;
//
如果是对象指针,就要使用
nil
,其他的就使用
NULL
sqlite3_exec
(database, sql,
NULL
,
NULL
,
NULL);
//
数据库支持的数据类型
NSString,NSNunber,NSData
//integer--->NSNumber
//text--->NSString
//blob-->NSData
//
关闭数据库
sqlite3_close(database);