1

当损坏/非sqlite传递给时,我需要处理核心数据错误

- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error

它会导致崩溃。崩溃清楚地描述了错误

未解决的错误错误域 = NSCocoaErrorDomain 代码 = 259“操作无法完成。(可可错误 259。)”用户信息 = 0xb925300 {NSUnderlyingException = 路径中的文件似乎不是 SQLite 数据库:

假设在这种情况下将返回nil值,我以这种方式处理它

if (![storeCoordeinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
};

但它仍然崩溃。在这种情况下处理此错误的正确方法是什么。?

4

1 回答 1

2

使用 try-catch 块。https://developer.apple.com/library/mac/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/ErrorHandling/ErrorHandling.html在页面底部

BOOL isValidDatabaseFile = YES;
@try
{
if (![storeCoordeinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) 
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
};
}
@catch(NSException *ex)
{
    isValidDatabaseFile = NO;
}
@finally
{
}

然后检查isValidDatabaseFile

于 2013-09-30T16:46:53.547 回答