iOS:核心数据和磁盘空间

nsx*_*241 5 cocoa-touch core-data ios

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

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

Ant*_*Ant 5

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

NSSQLiteErrorDomain = 13;
NSUnderlyingException = "error during SQL execution : database or disk is full";
Run Code Online (Sandbox Code Playgroud)

得到这个错误相当困难:

  • iOS设备声称已经装满了。我设法将额外的206MB压缩到声称具有0字节可用空间的iPod上。
  • 设备装满后,它会自动开始删除缓存和其他临时文件。


ado*_*oho 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;
Run Code Online (Sandbox Code Playgroud)