有关iOS中数据的存储&读取

来源:互联网 发布:知圆链条索具 编辑:程序博客网 时间:2024/05/17 19:22
  1. plist文件的数据写入和读取操作

  2. 只能存放数组和字典,字符串可以存,但是会改变plist文件格式,不能存对象

  3. //拼接路径 需要手动在文件名前加斜杠 ”/”

  4. - (NSString *)stringByAppendingString:(NSString *)aString; //NSString

  5. //拼接路径 系统会自动在文件名前加斜杠 “/” 缺点:如果系统更新,文件名改变,就会查找不到

  6. - (NSString *)stringByAppendingPathComponent:(NSString *)str; //NSPathUtilities

  7. //获取文件的路径

  8. FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde); //NSPathUtilities

  9. //写入数据 (数组或字典)

  10. - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; //NSDictionary NSArray

  11. //从文件读取数组

  12. + (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path; //NSArray

  13. 数据写入文件:(用plist文件存储数据)

  14. 1.获取路径

  15. 2.拼接路径/文件名

  16. 3.准备要写入的数据,字典或者数组

  17. 4.写入文件

  18. 从文件读取数据:

  19. 1.获取路径

  20. 2.拼接路径/文件名

  21. 3.读取数据


  1. Preference用户偏好 数据写入和读取

  1. 只适合存储比较少量的数据,最好是BOOL类型
  2. @interface NSUserDefaults : NSObject
  3. //取出用户偏好
  4. + (NSUserDefaults *)standardUserDefaults;
  5. //写入
  6. - (void)setObject:(nullable id)value forKey:(NSString *)defaultName;
  7. - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
  8. - (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
  9. //读取
  10. - (nullable id)objectForKey:(NSString *)defaultName;
  11. - (NSInteger)integerForKey:(NSString *)defaultName;
  12. - (BOOL)boolForKey:(NSString *)defaultName;
  13. //同步数据
  14. - (BOOL)synchronize;
  15. preference数据写入
  16. 1.取到用户偏好
  17. 2.写入数据
  18. 3.同步数据
  19. preference数据读取
  20. 1.取到用户偏好
  21. 2.读取数据
  22. 3.输出

  1. 归档解档对文件的操作

  1. 要归档的对象必须遵守NSCoding协议,并实现协议方法
  2. //要遵守的协议
  3. @protocol NSCoding
  4. - (void)encodeWithCoder:(NSCoder *)aCoder;
  5. - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;
  6. @end
  7. @interface NSKeyedUnarchiver : NSCoder
  8. //把对象属性转为 NSCoder 这种类型的对象中的值
  9. - (void)encodeObject:(nullable id)objv forKey:(NSString *)key;
  10. - (void)encodeInteger:(NSInteger)intv forKey:(NSString *)key NS_AVAILABLE(10_5, 2_0);
  11. //把NSCoder中 key对应的值 赋值给key对应的对象中的属性
  12. - (nullable id)decodeObjectForKey:(NSString *)key;
  13. //归档方法
  14. + (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;
  15. //解档方法
  16. + (nullable id)unarchiveObjectWithFile:(NSString *)path;
  17. 对象归档,解档前提条件:
  18. 1.创建一个类
  19. 2.让这个类遵守NSCoding协议
  20. 3.实现协议方法 (归档encodeWithCoder,解档initWithCoder)
  21. 4.归档方法内 encode/编码
  22. 把对象属性转为 NSCoder 这种类型的对象中的值
  23. 5.解档方法内 decode/解读
  24. NSCoder key对应的值 赋值给key对应的对象中的属性
  25. 对象归档:
  26. 1.创建对象
  27. 2.给属性赋值
  28. 3.调用归档方法进行归档
  29. archiveRootObject要进行归档的对象 toFile文件路径
  30. 对象解档:
  31. 1.创建对象来接收解档数据
  32. 2.调用解档方法进行解档
  33. unarchiveObjectWithFile解档对象的文件路径

0 0