【发布时间】:2012-01-20 22:10:45
【问题描述】:
有谁知道如果您尝试保存到核心数据但没有足够的磁盘空间会发生什么?
我假设保存操作会生成某种 NSError?您如何判断这是磁盘空间错误而不是磁盘写入期间的其他错误?
【问题讨论】:
标签: ios cocoa-touch core-data
有谁知道如果您尝试保存到核心数据但没有足够的磁盘空间会发生什么?
我假设保存操作会生成某种 NSError?您如何判断这是磁盘空间错误而不是磁盘写入期间的其他错误?
【问题讨论】:
标签: ios cocoa-touch core-data
在尝试填满磁盘几个小时后,我发现你得到的错误是:
NSSQLiteErrorDomain = 13;
NSUnderlyingException = "error during SQL execution : database or disk is full";
这个错误比较难得到:
【讨论】:
CoreData 开发人员在实现他们的错误处理 API 时似乎是一个糟糕的选择。他们没有定义 NSCoreDataErrorDomain,而是重载了 NSCocoaErrorDomain 并传递了定义的 SQLite 错误代码 here.
【讨论】:
您可以通过查询 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;
【讨论】:
NSPersistentStoreSaveError、NSPersistentStoreIncompleteSaveError 或 NSSQLiteError。当然,如果你想证明这一点,你必须装满一个设备。使用大图像执行此操作的示例应用程序编写起来很简单。安德鲁