Swift-数据存取

一、沙盒

  • 三个目录:Document/Library/tmp
    • Document:存放应用程序的数据
    • Library:存储程序的默认设置或其他状态信息
    • tmp:临时文件
    • 获取目录:
      NSSearchPathForDirectoriesInDomains(.documentDirectory, .allDomainsMask, true

二、写入/读取文件

  1. 写入文件

    • // 写入文件
      func MPWriteToFile(sandBoxPath: FileManager.SearchPathDirectory, filePath: String, fileData: Data, result: (_ success: Bool, _ message: String) -> Void) {

      // 获取沙盒路径
      let sandBoxAbsolutePath: [String] = NSSearchPathForDirectoriesInDomains(sandBoxPath, .allDomainsMask, true)

      guard sandBoxAbsolutePath.count > 0 else {
      result(false, “打开沙盒失败!”)
      return
      }

      let fileAbsolutePath: String = sandBoxAbsolutePath[0] + “/(filePath)”
      // // 判断是否是一个路径
      // let fileAbsolutePathNSString: NSString = NSString(string: fileAbsolutePath)
      // guard fileAbsolutePathNSString.isAbsolutePath else {
      //
      // result(false, “文件绝对路径有误!”)
      // return
      // }
      //
      let fileUrlPath: URL = URL(fileURLWithPath: fileAbsolutePath)
      // 开始写入
      do {
      try fileData.write(to: fileUrlPath, options: .atomicWrite)
      result(true, “文件写入成功!”)
      } catch {
      result(false, error.localizedDescription)
      return
      }
      }

  2. 读入文件

    • // 读取文件
      func MPReadFromFile(sandBoxPath: FileManager.SearchPathDirectory?, filePath: String, result: (_ success: Bool, _ data: Data?, _ message: String) -> Void) {

      var fileAbsolutePath: String = “”

      if let sandBoxPath = sandBoxPath {
      fileAbsolutePath = NSSearchPathForDirectoriesInDomains(sandBoxPath, .allDomainsMask, true)[0] + “/(filePath)”
      } else {
      fileAbsolutePath = filePath
      }

      let fileUrl: URL = URL(fileURLWithPath: fileAbsolutePath)
      var data: Data = Data()
      do {
      data = try Data(contentsOf: fileUrl, options: .uncachedRead)
      } catch {
      result(false, nil, error.localizedDescription)
      }

      result(true,data,”文件打开成功!”)
      }

三、用户首选项数据

1、保存用户首选项数据

  • // 保存用户首选项数据
    func MPSaveUserDefaultsInfo(info: Any, key: String) {
    let userDefaults: UserDefaults = UserDefaults.standard
    userDefaults.set(info, forKey: key)
    }

2、

  • // 读取用户首选项数据
    func MPReadUserDefaultsInfo(key: String, result: (_ info: Any?) -> Void) {
    let userDefaults: UserDefaults = UserDefaults.standard
    result(userDefaults.object(forKey: key))
    }

四、主资源目录:Bundle.main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值