我需要在将corrupt / non-sqlite传递给
时处理核心数据错误- (NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(NSString *)configuration URL:(NSURL *)storeURL options:(NSDictionary *)options error:(NSError **)error
导致崩溃。崩溃清楚地描述了错误
未解决的错误错误域= NSCocoaErrorDomain代码= 259“操作无法完成。(Cocoa错误259.)”UserInfo = 0xb925300 {NSUnderlyingException =路径中的文件似乎不是SQLite数据库:< / em>的
假设在这种情况下会返回 nil 值,我会这样处理
if (![storeCoordeinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
};
但它仍然崩溃。在这种情况下处理此错误的正确方法是什么。 ?
答案 0 :(得分:2)
使用try-catch块。 {$ 3}}位于页面底部
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