• iOS-Senior1-数据处理(文件读写)


    1.Model的数据层的理解

              

    1.1沙盒基础

    沙盒定义:每个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒。

    沙盒特点:

    沙盒的文件夹及各个文件夹的作用

     

    查找沙盒的两个方式:

    1.点击finder -> 前往(左上角)- > 按住alt键  -> 资源库 -> Developer -> CoreSimulator -> (目标文件夹) 

    2.搜索 -> 终端 -> 命令行:

    显示:defaults write com.apple.finder AppleShowAllFiles -bool true
    隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false

    1.2数据本地化知识点

    数据本地化定义以及方式:

     

    2.文件读写(存储)

    2.1简单数据类型写入本地(字符串,数组,字典,NSData类型的数据存储在本地)NSString,NSArray(以字符串为例)

    2.2(存储NSData类型的数据)读取图片image写入本地

    2.3复杂对象存入本地(Person)

        源代码如下:

    Person.h文件中:

     ///姓名

    @property (nonatomic,copy) NSString *name;

    ///性别

    @property (nonatomic,copy) NSString *gender;

     ///年龄

    @property (nonatomic,assign) NSInteger age;

    Person.m文件中:

    //归档:将所有的属性进行归档

    - (void)encodeWithCoder:(NSCoder *)aCoder {

        [aCoder encodeObject:self.name forKey:@"name"];

        [aCoder encodeObject:self.gender forKey:@"gender"];

        [aCoder encodeInteger:self.age forKey:@"age"];

    }

    //解档(反归档)

    - (instancetype)initWithCoder:(NSCoder *)aDecoder {

        self = [super init];

        if (self) {

            self.name = [aDecoder decodeObjectForKey:@"name"];

            self.gender = [aDecoder decodeObjectForKey:@"gender"];

            self.age = [aDecoder decodeIntegerForKey:@"age"];

        }

        return self;

    }

    ViewController.m文件中

     //如何把一个Person类型的对象存入本地,即为复杂对象的本地化,这个对象必须遵守NSCoding协议,并实现协议中的两个方法

    #pragma mark - 复杂对象的本地化

    #pragma mark - 归档过程

        //1.找寻Documents文件夹的目录

        NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        //2.创建Person对象

        Person *person = [[Person alloc]init];

        person.name = @"MBBoy";

        person.gender = @"boy";

        person.age = 18;

        

        //3.把这个对象归档

        //3.1创建NSMutableData,用于初始化归档工具的

        NSMutableData *data = [NSMutableData data];

        NSLog(@"data = %@",data);

        //3.2创建归档工具的

        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

        //3.3对要归档的person对象进行归档

        [archiver encodeObject:person forKey:@"person"];

        //3.4结束归档

        [archiver finishEncoding];

        NSLog(@"data1 = %@",data);

        

        //4.将归档的内容存储在本地

        NSString *personPath = [documentPath stringByAppendingPathComponent:@"person.plist"];

        //写入路径

        [data writeToFile:personPath atomically:YES];

        NSLog(@"personPath = %@",personPath);

    #pragma mark - 解档过程

        //1.将要解档的数据找出来

        NSData *resultData = [NSData dataWithContentsOfFile:personPath];

        NSLog(@"resultData = %@",resultData);

        //2.创建解档工具

        NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:resultData];

        //3.对person对象进行解档[使用一个对象接收,有返回值]

        Person *newPerson = [unArchiver decodeObjectForKey:@"person"];

        //4.结束解档

        [unArchiver finishDecoding];

        

        NSLog(@"name = %@,gender = %@,age = %ld",newPerson.name,newPerson.gender,newPerson.age);

    《下面做个练习题,搞一搞吧~~》 

    想知道具体步骤???留言!!!

        

        

     

     

     

      

  • 相关阅读:
    怎样用ZBrush中的Curves和Insert笔刷创建四肢
    如何利用ZBrush中的DynaMesh创建身体(二)
    如何利用ZBrush中的DynaMesh创建身体(一)
    如何用ZBrush雕刻出栩栩如生的头发(二)
    Fisker大师用ZBrush制作兽人萨尔全过程
    如何用ZBrush雕刻出栩栩如生的头发(一)
    ZBrush中的SubTool工具该怎样使用
    Access denied for user 'Administrator'@'localhost' (using password: YES)
    java.lang.NoClassDefFoundError: org/apache/ibatis/session/SqlSession
    Unable to install breakpoint in
  • 原文地址:https://www.cnblogs.com/zhoulina/p/zhoulina_love_life.html
Copyright © 2020-2023  润新知