zoukankan      html  css  js  c++  java
  • IOS文件沙盒

     

    在进行IPhone开发的时候,常常需要将简单的数据保存到文件中,以便下次再重新打开的时候能够读取文件中保存的数据。

    下面就来做一个简单的demo:

    步骤:

    1.创建一个SingleView项目,带有xib文件,在xib面板上拖放两个文本框,和一个按钮

    小提示:如何设置文本框编辑的时候能够点击键盘上的return键退出键盘?

    右击文本框,发现他的Did End On Exit事件,然后拖放到.h文件中,创建一个click事件

    - (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];//从缓存写入文件
    }



    如何寻找沙盒文件?

    点击mac系统上最上面一行的前往功能,然后按住alt键会显示出资源文件,该文件一般是隐藏的,前往->资源库->Application Support->iPhone Simulator->6.1->Applications->
    选择自定义的文件->Library或者Documents(存储大数据,自定义文件名的文件都在这里面)

    如何创建自定义文件名文件?

    //获取沙盒文件路径

    -(NSString *)getPath

    {

        //用来获得Document地址

        NSArray *arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES);//注意:这里是NSDocument不是NSDocumentation,特别注意

        NSLog(@"%@",arr);

        //在地址上增加文件

        NSString *path = [arr[0stringByAppendingPathComponent:@"abc.plist"];

        NSLog(@"%@",path);

        return path;

    }

    //创建自定义文件,并存储或者获取文件中数据

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        

        NSArray *arr = @[@"aaa",@"bbb",@"ccc"];

        [arr writeToFile:[self getPathatomically:YES];

        //判断是否有文件

        if([[NSFileManager defaultManagerfileExistsAtPath:[self getPath]])

        {

            arr = [NSArray arrayWithContentsOfFile:[self getPath]];

            NSLog(@"%@",arr);

        }

    }


    当开发一个应用要适应使用者还没点击保存,但一个电话打过来,要先接电话,所以就要让系统自动先保存当前的数据,适合实现?

     

        //获取应用

        UIApplication *app = [UIApplicationsharedApplication];

        //在通知中心添加一个观察者,当符合UIApplicationWillResignActiveNotification条件时,调用方法

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(save:) name:UIApplicationWillResignActiveNotificationobject:app];


    -(void)save:(id)sender

    {

        NSArray *arr = @[self.text1.text1,self.text2.text];

        [arr writeToFile:[selfgetPath] atomically:YES];

    }


  • 相关阅读:
    BZOJ4004: [JLOI2015]装备购买
    POJ3696:The Luckiest number
    BZOJ1053: [HAOI2007]反素数ant
    BZOJ1029: [JSOI2007]建筑抢修
    牛站(贪心+暴力做法)
    浅谈SPFA(没有特别的探讨,只是对某天晚上的思考做个记录)
    火车进栈问题(如何快速计算单个组合数)
    雷达设备
    畜栏预定
    防晒
  • 原文地址:https://www.cnblogs.com/riskyer/p/3278513.html
Copyright © 2011-2022 走看看