iOS - NSFileManager - 如何处理低磁盘空间

4
当向文件中写入数据时(例如缓存缩略图、用户数据等),如果设备磁盘已满无法写入您的数据,应该如何处理?
在磁盘空间不足的情况下,NSFileManager是否会抛出异常?
应该采用什么指定方式来处理这个问题,并告知用户剩余的磁盘空间非常有限?(我正在保存大量不同的数据在我的应用程序中的不同位置上,寻找一种通用的处理方式。)

1
你用什么方法保存数据?例如,如果你对 NSData 使用 writeToFile:options:error: 方法,如果可以保存数据,你将会得到一个返回值为假和一个错误值。 - Yuchen
发现一个有些相似的问题:https://dev59.com/uFvUa4cB1Zd3GeqPxNBU - Yuchen
例如,我想将NSDictionary写入文件,但是在使用默认的writeToFile方法时没有错误选项。 - Max
1个回答

2

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

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

更多信息请参见NSDictionary存储字典部分

或者,

如果您想获取更详细的错误消息(例如磁盘空间不足、文件夹不存在等),则可以在保存之前将NSDictionary转换为NSData了解详情

  • NSDictionary to NSData:

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

    NSDictionary *myDictionary = (NSDictionary*) [NSKeyedUnarchiver unarchiveObjectWithData:myData];
    
您将获得访问此API -writeToFile:options:error: 的权利。

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

有关详细信息,还可以在NSData存储数据部分找到。

我认为这是在设备上存在低磁盘空间问题时最好的解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接