iOS - NSFIleManager - 如何处理低磁盘space

iOS - NSFIleManager - How to deal with low disk space

当写入数据到文件时(例如缓存缩略图,用户数据等),您如何处理由于磁盘已满而无法将数据写入文件的情况?

NSFileManager 会在磁盘不足的情况下抛出异常吗space?

处理此问题并通知我的用户磁盘空间所剩无几 space 可用于其数据的指定方法是什么? (我在我的应用程序的不同位置保存了大量不同的数据,并寻找一种通用的方法来处理它。)

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

Return Value
YES if the file is written successfully, otherwise NO.

NSDictionaryStoring Dictionaries Section 下有更多信息。

或者,

如果您想获得更详细的失败错误消息(例如磁盘不足space、文件夹不存在等),那么您可以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:

If there is an error writing out the data, upon return contains an NSError object that describes the problem.

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

我认为这是您在设备上出现磁盘不足 space 问题时所能做的最好的事情。