在进行IPhone开发的时候,常常需要将简单的数据保存到文件中,以便下次再重新打开的时候能够读取文件中保存的数据。
下面就来做一个简单的demo:
步骤:
1.创建一个SingleView项目,带有xib文件,在xib面板上拖放两个文本框,和一个按钮
小提示:如何设置文本框编辑的时候能够点击键盘上的return键退出键盘?
- (IBAction)click:(id)sender {
[senderresignFirstResponder];
}
2.修改ViewController.m:
#import "DXWViewController.h" @interface DXWViewController () @end @implementation DXWViewController - (void)viewDidLoad { [super viewDidLoad]; //获得NSUserDefaults NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; //对NSUserDefaults进行赋值 // [user setObject:@"小明" forKey:@"name"]; // [user setInteger:20 forKey:@"age"]; // [user synchronize];//从缓存写入文件 //从NSUserDefaults通过key获取值 if ([user objectForKey:@"name"] != nil) { self.txtName.text = [user objectForKey:@"name"]; self.txtAge.text = [NSString stringWithFormat:@"%d",[user integerForKey:@"age"]]; } } - (void)dealloc { [_txtName release]; [_txtAge release]; [super dealloc]; } - (IBAction)click:(id)sender { NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:self.txtName.text forKey:@"name"]; [user setInteger:[self.txtAge.text intValue] forKey:@"age"]; [user synchronize];//从缓存写入文件 }
如何寻找沙盒文件?
如何创建自定义文件名文件?
//获取沙盒文件路径
-(NSString *)getPath
{
//用来获得Document地址
NSArray *arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//注意:这里是NSDocument不是NSDocumentation,特别注意
NSLog(@"%@",arr);
//在地址上增加文件
NSString *path = [arr[0] stringByAppendingPathComponent:@"abc.plist"];
NSLog(@"%@",path);
return path;
}
//创建自定义文件,并存储或者获取文件中数据- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *arr = @[@"aaa",@"bbb",@"ccc"];
[arr writeToFile:[self getPath] atomically:YES];
//判断是否有文件
if([[NSFileManager defaultManager] fileExistsAtPath:[self getPath]])
{
arr = [NSArray arrayWithContentsOfFile:[self getPath]];
NSLog(@"%@",arr);
}
}
当开发一个应用要适应使用者还没点击保存,但一个电话打过来,要先接电话,所以就要让系统自动先保存当前的数据,适合实现?
//获取应用
UIApplication *app = [UIApplication sharedApplication];
//在通知中心添加一个观察者,当符合UIApplicationWillResignActiveNotification条件时,调用方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(save:) name:UIApplicationWillResignActiveNotification object:app];
-(void)save:(id)sender
{
NSArray *arr = @[self.text1.text1,self.text2.text];
[arr writeToFile:[self getPath] atomically:YES];
}