1兼耀、plist文件
/**
描述:plist文件持久化倦踢,存一些小型的文件恍箭。
plist文件是將某些特定的類刻恭,通過**XML**文件的方式保存在目錄中。
NSArray;//數(shù)組
NSMutableArray;//可變數(shù)組
NSDictionary;//字典
NSMutableDictionary;//可變字典
NSData;//二進(jìn)制數(shù)據(jù)
NSMutableData;//可變二進(jìn)制數(shù)據(jù)
NSString;//字符串
NSMutableString;//可變字符串
NSNumber;//基本數(shù)據(jù)
NSDate;//日期
*/
// 存儲
[self writeToPlist];
// 取出
NSArray *result = [self readFromPlist];
NSLog(@"取出來的plist文件%@",result);
/**
讀寫文件-plist
*/
- (void)writeToPlist{
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;
NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"];
NSArray *array = @[@"1234", @"tony", @"java"];
//序列化扯夭,把數(shù)組存入plist文件
[array writeToFile:fileName atomically:YES];
}
- (NSArray *)readFromPlist{
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;
NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"];
//反序列化,把plist文件數(shù)據(jù)讀取出來鞍匾,轉(zhuǎn)為數(shù)組
NSArray *result = [NSArray arrayWithContentsOfFile:fileName];
return result;
}
2交洗、NSUserDefaults
/**
描述:NSUserDefaults
如果沒有調(diào)用synchronize方法,系統(tǒng)會根據(jù)I/O情況不定時刻地保存到文件中橡淑。所以如果需要立即寫入文件的就必須調(diào)用synchronize方法构拳。
偏好設(shè)置會將所有數(shù)據(jù)保存到同一個文件中,使用同一個key進(jìn)行存儲數(shù)據(jù)梁棠,會覆蓋之前存儲的數(shù)據(jù)置森。
存的都是不可變的。
*/
//1.獲得NSUserDefaults文件
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//2.向偏好設(shè)置中寫入內(nèi)容
[userDefaults setObject:@"AAA" forKey:@"a"];
[userDefaults setBool:YES forKey:@"sex"];
[userDefaults setInteger:21 forKey:@"age"];
//2.1立即同步
[userDefaults synchronize];
//3.讀取偏好設(shè)置
NSString *name = [userDefaults objectForKey:@"a"];
BOOL sex = [userDefaults boolForKey:@"sex"];
NSInteger age = [userDefaults integerForKey:@"age"];
NSLog(@"NSUserDefaults讀取數(shù)據(jù):%@, %d, %ld", name, sex, age);
3符糊、歸檔與反歸檔
創(chuàng)建model對象:
Person.h
#import// `encodeWithCoder`:用來說明如何將對象編碼到歸檔中凫海。 `initWithCoder`:用來說明如何進(jìn)行解檔來獲取一個新對象。@interface Person : NSObject//2.設(shè)置屬性
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *passWord;
+ (Person *)userWithName:(NSString *)name password:(NSString *)password;
Person.m
+ (Person *)userWithName:(NSString *)name password:(NSString *)password
{
Person *user = [[Person alloc]init];
user.name = name;
user.passWord = password;
return user;
}
//歸檔
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.passWord forKey:@"passWord"];
}
//解檔
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.passWord = [aDecoder decodeObjectForKey:@"passWord"];
}
return self;
}
/**
描述:歸檔反歸檔
*/
// 歸檔
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;
NSString *file = [path stringByAppendingPathComponent:@"person.data"];
Person *person = [Person userWithName:@"xiaowang" password:@"110"];
Person *person1 = [Person userWithName:@"xiaozhang" password:@"119"];
NSMutableArray *personsArr = [NSMutableArray arrayWithObjects:person, person1, nil];
// model數(shù)組存儲
[NSKeyedArchiver archiveRootObject:personsArr toFile:file];
// 解檔
NSString *pathResult = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES).firstObject;
NSString *fileResult = [pathResult stringByAppendingPathComponent:@"person.data"];
NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:fileResult];
for (Person *per in array) {
if (per) {
NSLog(@"歸檔反歸檔:%@\n%@",per.name,per.passWord);
}
}