ios 数据本地存储基本用法

本文介绍了iOS中数据的本地存储方法,包括使用plist文件进行读写操作,利用用户偏好设置保存简单数据,以及通过NSCoding(NSKeyedArchiver, NSKeyedUnarchiver)实现对象的序列化和反序列化。" 94931023,8669597,Java实现Circle类:包含半径属性与构造方法,"['Java', '面向对象', '类定义', '实例化']
摘要由CSDN通过智能技术生成



plist 文件读写

数据写入plist文件
   //data soure
    NSArray *data = @[@"AAA",@"BBB",@"CCC"];

    //get document path
    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    
    NSLog(@"%@",doc);
    
    //create plist path
    NSString *filePath=[doc stringByAppendingPathComponent:@"my.plist"];
    
    //write data to plist file
    [data writeToFile:filePath atomically:YES];

 从plist文件中读取数据
	
    NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

    //create plist path
    NSString *filePath=[doc stringByAppendingPathComponent:@"my.plist"];

    NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
    
    NSLog(@"%@",array);


用户偏好设置(Preferences)

   //写入数据
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@"acct" forKey:@"userName"];
    [defaults setFloat:10.0f forKey:@"money"];
    [defaults setBool:YES forKey:@"is_auto"];
    [defaults synchronize];
    
    //读取数据 
    NSString *acct = [defaults objectForKey:@"userName"];
    float money = [defaults floatForKey:@"money"];
    BOOL is_auto = [defaults boolForKey:@"is_auto"];
    NSLog(@"%@,%f,%@",acct,money,is_auto?@"YES":@"NO");

    //删除数据
    [defaults removeObjectForKey:@"acct"];
    [defaults synchronize];


 NSCoding (NSKeyedArchiver,NSKeyedUnarchiver) 序列化


	 Person *person =[[Person alloc] init];
	    person.name=@"tom";
	    person.tel=@"1366666666";
	    person.age=18;
	    
	    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"test.plist"];
	    
	    [NSKeyedArchiver archiveRootObject:person toFile:filePath];
	    
	    Person *nscodeingPerson = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
	    NSLog(@"name=%@,age=%ld,tel=%@",nscodeingPerson.name,nscodeingPerson.age,nscodeingPerson.tel);

	Person.h

	#import <Foundation/Foundation.h>

	@interface Person : NSObject<NSCoding>
	@property(nonatomic,copy)NSString *name;
	@property (nonatomic,copy)NSString *tel;
	@property(nonatomic,assign)NSInteger age;

	@end

	Person.m
	#import "Person.h"

	@implementation Person

	-(void)encodeWithCoder:(NSCoder *)aCoder{
	    [aCoder encodeObject:self.name forKey:@"name"];
	    [aCoder encodeInteger:self.age forKey:@"age"];
	    [aCoder encodeObject:self.tel forKey:@"tel"];
	}

	-(id)initWithCoder:(NSCoder *)aDecoder{
	    if (self=[super init]) {
		self.name = [aDecoder decodeObjectForKey:@"name"];
		self.age = [aDecoder decodeIntegerForKey:@"age"];
		self.tel = [aDecoder decodeObjectForKey:@"tel"];
	    }
	    return  self;
	}
	@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值