经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » iOS » 查看文章
iOS开发-本地存储(偏好设置,Plist,归档)
来源:cnblogs  作者:昔年随心  时间:2018/10/17 8:58:56  对本文有异议

 

 

1.   NSUserDefaults

  1. //TODO: 1.NSUserDefaults NSUserDefaults类除了可以存储数组、字典、NSdata外,还可以直接存储OC基本类型属性。但是不能直接作用到自定义对象.
  2. [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@""];//设置初始值
  3. [[NSUserDefaults standardUserDefaults] synchronize];//进行同步
  4. [[NSUserDefaults standardUserDefaults] objectForKey:@""];//取值

2.    Plist

  1. //TODO: 2.Plist文件
  2. //1.根据已有plist文件取值
  3. NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];
  4. //如果plist文件是一个NSArray,用数组取
  5. NSArray *array = [NSArray arrayWithContentsOfFile:pathString];
  6. //如果plist文件是一个NSDictionary,用字典取
  7. NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:pathString];
  1. //2.创建plist文件
  2. NSArray *homeDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  3. NSString *documentString = homeDirectory[0];
  4. NSString *documentPath = [documentString stringByAppendingPathComponent:@"GCD.plist"];
  5. NSFileManager *fileManager = [NSFileManager defaultManager];
  6. [fileManager createFileAtPath:documentPath contents:nil attributes:nil];
  7. NSArray *fileArray = @[@{@"name":@"one"},@{@"name":@"two"}];
  8. [fileArray writeToFile:documentPath atomically:YES];//写入数据
  9. NSArray *readArray = [NSArray arrayWithContentsOfFile:documentPath];//读取数据

 

3.  归档、解档

  1. //TODO: 3.归档/解档
  2. archiveModel *model = [[archiveModel alloc]init];
  3. model.name = @"小明";
  4. model.age = @"18";
  5. model.sex = @"";
  6. NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  7. NSString *filePath = [pathArray[0] stringByAppendingPathComponent:@"model"];
  8. /*
  9. 一.只归档一个对象
  10. [NSKeyedArchiver archiveRootObject:model toFile:filePath];
  11. */
  12. /*
  13. 一.只解档一个对象
  14. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  15. //路径存在
  16. archiveModel *readModel = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
  17. NSLog(@"解档:%@",readModel);
  18. }
  19. */
  20. //二.归档多个对象
  21. NSMutableData *data = [[NSMutableData alloc]init];
  22. NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
  23. [keyedArchiver encodeObject:model forKey:@"model"];
  24. //[keyedArchiver encodeObject:model forKey:@"key1"];
  25. //[keyedArchiver encodeObject:model forKey:@"key2"];
  26. [keyedArchiver finishEncoding];
  27. if ([data writeToFile:filePath atomically:YES]) {
  28. NSLog(@"归档成功");
  29. }
  30. //二.解档多个对象
  31. if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  32. NSData *data = [NSData dataWithContentsOfFile:filePath];
  33. NSKeyedUnarchiver *keyedUnarchive = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
  34. archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"model"];
  35. //archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key1"];
  36. //archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key2"];
  37. [keyedUnarchive finishDecoding];
  38. }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号