iOS:核心数据和磁盘空间

时间:2012-01-20 22:10:46

标签: ios cocoa-touch core-data

有没有人知道如果您尝试保存到核心数据会发生什么,但是没有足够的磁盘空间?

我假设保存操作会产生某种NSError?在磁盘写入期间,您如何判断磁盘空间错误而不是其他错误?

3 个答案:

答案 0 :(得分:3)

在尝试填满磁盘几个小时后,我发现你得到的错误是:

NSSQLiteErrorDomain = 13;
NSUnderlyingException = "error during SQL execution : database or disk is full";

很难得到这个错误:

  • iOS设备声称它们确实已经满了。我设法将一个额外的206MB压缩到声称有0字节空闲的iPod上。
  • 当设备填满时,它会自动开始删除缓存和其他临时文件。

答案 1 :(得分:2)

CoreData开发人员在实现错误处理API时,这似乎是一个糟糕的选择。他们没有定义NSCoreDataErrorDomain,而是重载NSCocoaErrorDomain并传递定义的SQLite错误代码here.

答案 2 :(得分:0)

您可以通过查询NSError实例并解析所涉及的错误域的结果来找出错误。其中一个域可能包含您要查找的错误代码:

// Predefined domain for errors from most AppKit and Foundation APIs.
FOUNDATION_EXPORT NSString *const NSCocoaErrorDomain;

// Other predefined domains; value of "code" will correspond to preexisting values in these domains.
FOUNDATION_EXPORT NSString *const NSPOSIXErrorDomain;
FOUNDATION_EXPORT NSString *const NSOSStatusErrorDomain;
FOUNDATION_EXPORT NSString *const NSMachErrorDomain;