使用无效URL调用addPersistentStoreWithType时崩溃 - 路径中的文件似乎不是SQLite数据库

时间:2013-09-30 16:24:51

标签: ios objective-c sqlite core-data

我需要在将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]);
};

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

1 个答案:

答案 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