【问题标题】:iOS - NSFIleManager - How to deal with low disk spaceiOS - NSFIleManager - 如何处理磁盘空间不足
【发布时间】:2015-03-05 20:16:02
【问题描述】:

在将数据写入文件时(例如用于缓存的缩略图、用户数据等),您如何处理由于磁盘已满而导致 iDevice 无法将数据写入文件的事实?

如果磁盘空间不足,NSFileManager 会抛出异常吗?

处理这个问题并通知我的用户他的数据几乎没有剩余磁盘空间的指定方法是什么? (我在我的应用程序的不同位置保存了大量不同的数据,并寻找一种通用的方法来处理它。)

【问题讨论】:

  • 你用什么方法保存数据?例如,如果您将writeToFile:options:error: 用于NSData,则如果您可以保存数据,则会得到一个返回值 false 和一个error 值。
  • 发现了一个有点类似的问题:stackoverflow.com/questions/7618722/…
  • 例如,我想将 NSDictionarys 写入文件,而这些在使用默认 writeToFile 方法时没有错误选项。

标签: ios objective-c nsfilemanager diskspace


【解决方案1】:

正如您在 cmets 中提到的要保存 NSDictionary。如果只想知道文件是否保存成功,可以查看 writeToFile:atomically:函数的返回值。

返回值
文件写入成功则为YES,否则为NO。

NSDictionaryStoring Dictionaries Section 下的更多信息。

或者,

如果您想获得更详细的失败错误信息(如磁盘空间不足、文件夹不存在等),您可以convert the NSDictionary to NSData before saving it

  • NSDictionaryNSData:

    NSData *myData = [NSKeyedArchiver archivedDataWithRootObject:myDictionary];
    
  • NSDataNSDictionary:

    NSDictionary *myDictionary = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:myData];
    

好处是您还可以访问此 API -writeToFile:options:error:

如果写入数据时出错,返回时会包含一个描述问题的 NSError 对象。

还可以在NSDataStoring Data Section 下找到更多详细信息。

我认为这是最好的办法,以防设备出现磁盘空间不足的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2013-10-09
    • 2015-12-04
    • 2015-12-30
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多