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

时间:2015-03-05 20:16:02

标签: ios objective-c nsfilemanager diskspace

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

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

处理此问题的指定方法是什么,并通知我的用户他的数据剩余的磁盘空间非常小? (我在我的应用程序中的不同位置保存了大量不同的数据,并寻找处理它的常用方法。)

1 个答案:

答案 0 :(得分:2)

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

  

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

NSDictionary' Storing 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对象。

还可以在NSData的{​​{3}}下找到更多详细信息。

我认为,如果设备上的磁盘空间不足,您可以做到最好。