在我们用Xcode创建工程的时候,无时无刻都都被记录在了本地存储里面,如何找到你所建立的工程具体在本地的哪个文档里面,我们下面,做以下步骤:
 点击打开Finder -> 左上角菜单栏点击前往,进去后摁住(+Alt)->点击进入 资源库->选中 Application Support ->继续进入 iPhone Simulator ->选择 7.1(版本,或多或少) -> 再点击进入Applications -> 打开任意文件夹(所有乱码命名的文件都是我们所建立的,或建立过的工程;
 里面有很多文件夹:
 .app文件夹
      Bundle文件夹,Bundle包,
      存储代码和工程里面左边的所有内容
       包里面的内容在开发过程中可以修改,代码执行时不可以做任何修改。
 Documents文件夹
      存储在应用程序的生命周期内所有存储的内容
 library文件夹
      缓存,图片,网络加载的数据缓存
 tmp
     零时性存储,用不着的即可删除掉
 为了更好的,更直观的了解,我们新建工程,再工程里面,我们如同以往,建立导航控制器; 
 
 
 
#import "MainViewController.h"
#import "Student.h"
@interface MainViewController ()

@end

@implementation MainViewController
- (void)dealloc
{
    [super dealloc];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self searchAction];
    [self writeString];
    [self writeArray];
    [self readString];
    [self readArray];
    [self writeDictory];
    [self readDictory];
    [self writeDate];
    [self readDate];
    [self userDefaultsWrite];
    [self readUserDefaults];
    [self archiveObject];
    [self readArchiveObject];
}
#pragma mark 获取沙盒路径
-(void)searchAction{
   NSArray *parths =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
    NSLog(@"%@",parths);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#pragma mark 写入字符串
-(void)writeString{
    NSArray *write = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//获取路径
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];//拼接字符串。/text.txt即文件名称和后缀名,可以任意,不需要写死
范厨师捡肥皂";
定义错误信息
存入信息
    if (error) {
        NSLog(@"error ===%@",error);
    }
}
#pragma mark 读取字符串
-(void)readString{
//获取路径
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];
    NSString *value = [NSString stringWithContentsOfFile:str encoding:NSUTF8StringEncoding error:NULL];
   
    
    
    //如何在原有字符串上拼接字符串
我们",value];//读取后拼接
拼接后在写入,原文件将被覆盖掉
读取新数组
    NSLog(@"string ===%@",vlaues);
    
}
#pragma mark 写入数组
-(void)writeArray{
    NSArray *write = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/array.txt"];
范厨师捡肥皂",@"马特吃肥皂",nil];
    
    [values writeToFile:str atomically:YES];
    
}
#pragma mark 读取数组
-(void)readArray{
    NSArray *write = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/array.txt"];
    NSArray *vlaue = [NSArray arrayWithContentsOfFile:str];
    NSLog(@"array====%@",vlaue);

}
#pragma mark 写入字典
-(void)writeDictory{
    NSArray *write = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/dic.txt"];
    NSDictionary *value = [NSDictionary  dictionaryWithObjectsAndKeys:@"mater",@"name",@"28",@"age", nil];
    [value writeToFile:str atomically:YES];
}
#pragma mark 读取字典
-(void)readDictory{
    NSArray *write = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [write objectAtIndex:0];
    str = [NSString stringWithFormat:@"%@%@",str,@"/dic.txt"];

    NSDictionary *value = [NSDictionary dictionaryWithContentsOfFile:str];
    NSLog(@"dictory======%@",value);
    
}
#pragma mark 二进制存储
-(void)writeDate{
    NSArray *parth = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [parth firstObject];
    str = [NSString stringWithFormat:@"%@/date",str];
    NSString *value = @"Hello world";
把字符串转换为UTF8形式的二进制格式
    [date writeToFile:str atomically:YES];
    NSLog(@"%@",date);
}
#pragma mark 二进制读取
-(void)readDate{
    NSArray *parth = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [parth firstObject];
    str = [NSString stringWithFormat:@"%@/date",str];
    NSData  * data= [NSData dataWithContentsOfFile:str];
    NSString *value = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"date=====%@",value);

}
//轻量存储
#pragma mark 写入轻量存储
-(void)userDefaultsWrite{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
不得不说" forKey:@"name"];
同步存储
    [defaults synchronize];
    
}
#pragma mark 读取轻量存储
-(void)readUserDefaults{
    NSString * value  = [[NSUserDefaults standardUserDefaults]objectForKey:@"name"];
    NSLog(@"%@",value);
}

#pragma mark复杂数据类型存储
//归档,即将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储
#pragma mark 序列化

以下是我们自定义的model进行归档和解档:

在自定的model.h文件中,我们需遵行NSCoding协议,且如果我们只有name。sex。age三个属性。我们要在.m中实现如下操作:


-(instancetype)init{
    self  = [super init];
    if (self) {
        
    }
    return self;
}
//归档协议,或者序列化协议
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.name forKey:@"name"];
    [aCoder encodeObject:self.sex forKey:@"sex"];
    NSNumber * num = [NSNumber numberWithInt:self.age];
    [aCoder encodeObject:num forKey:@"age"];
}
//解档,反序列化
- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super init]) {
        self.name = [aDecoder decodeObjectForKey:@"name"];
        self.sex = [aDecoder decodeObjectForKey:@"sex"];
        NSNumber *num = [aDecoder decodeObjectForKey:@"age"];
把NSnumber强转为int型
    }
    return self;






既而在MainUiViewController里面进行归档和解档:





-(void)archiveObject{
    Student *stu =[[Student alloc]init];
    stu.name = @"mate";
男";
    stu.age  = 38;
    
归档为数组

    NSData *data=[  NSKeyedArchiver  archivedDataWithRootObject:arr];
//    NSData *data=[  NSKeyedArchiver  archivedDataWithRootObject:stu];//model归档
    
    NSArray *parth = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [parth firstObject];
    
    str = [NSString stringWithFormat:@"%@/date",str];
    [data writeToFile:str atomically:YES];
}
//解档,将归档后的二进制文件解档为想对应的model类的对象
-(void)readArchiveObject{
    NSArray *parth = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * str = [parth firstObject];
    str = [NSString stringWithFormat:@"%@/date",str];
    NSData  * data= [NSData dataWithContentsOfFile:str];
    //归档时数组。解档也是数组。之后取model,如果时model归档。则model解档
    
    NSArray *model =[NSKeyedUnarchiver unarchiveObjectWithData:data];
    Student *stu = [model objectAtIndex:0];

//    Student *model  = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    NSLog(@"%@",stu.name);

    
}
 

@end




ios怎样获取本地数据文件 iphone怎么找本地文件管理_存储



只有轻量级存储存在library中,Preferences 的第二个文件中:

ios怎样获取本地数据文件 iphone怎么找本地文件管理_缓存_02