【IOS开发】NSArray,NSDictionary数据的保存

来源:互联网 发布:改良汉服淘宝店推荐 编辑:程序博客网 时间:2024/06/05 00:20

保存数据的步骤:

1.新建一个保存数据的路径

2.将数据写入对应的路径


基本函数简介:

NSString * NSHomeDirectory ( void );

 返回值是主目录。在IOS中表示当年打开程序的沙盒的主目录。


NSArray * NSSearchPathForDirectoriesInDomains ( NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde );

返回值:是一个字符串数组,保存查找到的当前目录。

第一个参数类型:NSSearchPathDirectory表示要查找的目录。

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/index.html#//apple_ref/doc/c_ref/NSSearchPathDirectory

第二个参数类型:NSSearchPathDomainMask是一个根目录,用来指定查找范围

[objc] view plaincopy
  1. enum {  
  2.    NSUserDomainMask  = 1,  
  3.    NSLocalDomainMask  = 2,  
  4.    NSNetworkDomainMask  = 4,  
  5.    NSSystemDomainMask  = 8,  
  6.    NSAllDomainsMask  = 0x0ffff ,  
  7. };  
  8. typedef NSUInteger  NSSearchPathDomainMask;  

第三个参数类型:BOOL 表示是否展开目录的波浪号,通常是YES。


-(NSString *)stringByAppendingPathComponent:(NSString *)aString

该函数用来连接字符串,并且只能作用在文件路径上。

如果文件名为"AyaseEli.plist"添加到相应的路径会有不同的表现

"/tmp/" ----------> /tmp/AyaseEli.plist

"/tmp" ----------> /tmp/AyaseEli.plist

"/"----------> /AyaseEli.plist

"" --------->AyaseEli.plist

-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)atomically

返回值:YES表示写入成功,否则NO。

第一个参数:(NSString *)path表示要写入的路径,path为路径+文件名。

第二个参数:(BOOL)atomically YES表示数据写入一个备用的文件。也就是保存要保存的文件改名了,改成path路径中的文件名。否则就保存原始文件名。


实例:将NSDictionary 和 NSArray写入plist

[objc] view plaincopy
  1. /* 
  2.  在界面上添加两个按钮 
  3.   
  4.  1) 其中一个将NSArray写入文档目录 
  5.  2) 另一个将NSDictionary写入文档目录 
  6.   
  7.  写入文件的步骤: 
  8.  1. 确定文件路径 
  9.  2. 将内容写入文件 
  10.   
  11.  不过,要写入plist文件,数据类型是有限制的:NSInteger,CGFloat,NSString,NSDate 
  12.  */  
  13.   
  14. - (void)viewDidLoad  
  15. {  
  16.     [super viewDidLoad];  
  17.       
  18.     UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  19.     [button1 setFrame:CGRectMake(11010010040)];  
  20.     [button1 setTitle:@"数组" forState:UIControlStateNormal];  
  21.     [button1 addTarget:self action:@selector(writeArray) forControlEvents:UIControlEventTouchUpInside];  
  22.     [self.view addSubview:button1];  
  23.       
  24.     UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  25.     [button2 setFrame:CGRectMake(11020010040)];  
  26.     [button2 setTitle:@"字典" forState:UIControlStateNormal];  
  27.     [button2 addTarget:self action:@selector(writeDict) forControlEvents:UIControlEventTouchUpInside];  
  28.     [self.view addSubview:button2];  
  29. }  
  30.   
  31. #pragma mark - Actions  
  32. - (void)writeArray  
  33. {  
  34.     NSLog(@"写入数组");  
  35.     // 1. 定义数组  
  36.     NSArray *array = @[@1@2@3@4];  
  37.     // 2. 确定要写入的位置  
  38.     NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  39.     NSString *doc = documents[0];  
  40.       
  41.     NSString *path = [doc stringByAppendingPathComponent:@"array.plist"];  
  42.       
  43.     NSLog(@"%@", doc);  
  44.       
  45.     // 3. 写入数组  
  46.     [array writeToFile:path atomically:YES];  
  47.       
  48.     // 4. 写入一个字符串数组  
  49.     NSMutableArray *strArray = [NSMutableArray arrayWithCapacity:20];  
  50.     for (NSInteger i = 0; i < 20; i++) {  
  51.         NSString *text = [NSString stringWithFormat:@"itcast-%d", arc4random_uniform(10000)];  
  52.         [strArray addObject:text];  
  53.     }  
  54.       
  55.     NSString *strPath = [doc stringByAppendingPathComponent:@"str.plist"];  
  56.     [strArray writeToFile:strPath atomically:YES];  
  57. }  
  58.   
  59. - (void)writeDict  
  60. {  
  61.     NSLog(@"写入字典");  
  62.       
  63.     // 1. 实例化字典  
  64.     NSMutableDictionary *dict = [NSMutableDictionary dictionary];  
  65.     for (NSInteger i = 0; i < 20; i++) {  
  66.         NSString *keyName = [NSString stringWithFormat:@"key-%02d", i];  
  67.           
  68.         NSMutableArray *array = [NSMutableArray array];  
  69.           
  70.         NSInteger rnd = arc4random_uniform(10) + 5;  
  71.         for (NSInteger j = 0; j < rnd; j++) {  
  72.             NSString *text = [NSString stringWithFormat:@"itcast-%d", arc4random_uniform(10000)];  
  73.               
  74.             [array addObject:text];  
  75.         }  
  76.           
  77.         [dict setValue:array forKey:keyName];  
  78.     }  
  79.   
  80.     // 2. 写入文件  
  81.     NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  82.     NSString *path = [documents[0] stringByAppendingPathComponent:@"dict.plist"];  
  83.   
  84.     [dict writeToFile:path atomically:YES];  
  85. }  
0 0