NSUserDefaults

本文介绍了如何使用NSUserDefaults在iOS应用中持久化存储信息,包括设置、获取、更新、删除数据,以及如何通过通知和定时任务操作数据。此外,文章还展示了如何创建和解析日期时间,以及如何获取当前日期时间。

使用NSUserDefaults,即使程式退出运行也会保存信息

 NSUserDefault只能保存NSString型,NSNumber型,NSArray型,NSDictionary型,NSData型,其他型的话可先转成NSData型,

 

取得userDefaults,登录到Dictionary:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];//取得
NSMutableDictionary *mDic = [NSMutableDictionary dictionary];
 

初始化keyvalue,然后登记到Dictionary:

[defaults setObject: @"99" forKey:@"KEY_I"]; // key的初始值是99
[defaults setObject:@"helloforKey:@"KEY_H"]; //key的初始值是hello
[ud registerDefaults: mDic]; // *只会登记不存在的key的值

                            

设定keyvalue,保存并更新:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; //取得
[ud setFloat:1.23  forKey:@"KEY_F"];  //保存
[ud setObject:@"你好 forKey:@"KEY_S"]; //保存
[ud synchronize]; // *不存在的key新規,已存在的key更新其值
 

取得信息:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];  //取得
float f = [ud floatForKey:@"KEY_F"]; 
NSString s = [ud stringForKey:@"KEY_S"]; 
 

删除信息:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];  //取得
[ud removeObjectForKey:@"KEY_I"];
 

作成通知:

NSNotification *n = [NSNotification notificationWithName:@"Today"
  object:self
 userInfo:dic];

通知开始执行:

[[NSNotificationCenter defaultCenterpostNotification: cn];

 

收信方:

取得通知:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

去通知中心要求得到通知同时呼叫需执行的方法:

 [nc addObserver:self selector:@selector(hello:)
                            name:@"Today"
                      object:nil];
-(void)hello:(NSNotificationCenter*)center{
    //从通知得到的值 center    
NSString *value = [[center userInfoobjectForKey:@"KEY"];   

 

 

timer是否已经开始在进行中:

BOOL b = [tm isValid];

 

自己设定的形式来取得日期:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat  = @"yyyy/MM/dd HH:mm:ss";
或 [df setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

 

取得现在日期时间:(连接上面设定形式)

NSString *str = [df stringFromDate:[NSDate date]];

设定日期: (连接上面设定形式)

NSDate *aDate = [df dateFromString: @"2000/03/01 00:00:00"];

 

从某时间开始经过某秒后的日期时间:

bDate = [aDate initWithTimeInterval:3*60  sinceDate:aDate]; //aDate3分钟
 

指定某月的末日: (使用前一个月的第一天来取得)

NSDate *aDate = [inputDateFormatter dateFromString:@"2000/03/01 00:00:00"]; //给定31日零点日期
NSDate *bDate = [orgDate initWithTimeInterval:-1*24*60*60  sinceDate:a];// 1日前
NSLog(@"20002月的末日 -> %@"bDate);

 

取得某两个时间相隔多久:

since = [dateA timeIntervalSinceDate: dateB];

 

只取得日期不要时间:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeStyle: NSDateFormatterNoStyle];
[df setDateStyle: NSDateFormatterMediumStyle];          
NSString *nowDateStr = [df stringFromDate:[NSDate date]];
NSDate *nowDate = [df dateFromString:nowDateStr];
NSLog(@"%@", nowDate);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值