2

我正在测试 DBAccess 以查看是否可以在项目中使用它。我在更改 sqlite 文件的位置时遇到问题,我希望它位于缓存目录中。这是我到目前为止在 AppDelegate.m 中编写的部分代码:

- (DBAccessSettings*)getCustomSettings {
    DBAccessSettings *settings = [[DBAccessSettings alloc] init];
    NSURL *applicationCachesDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
    settings.databaseLocation = [applicationCachesDirectory absoluteString];
    settings.defaultDatabaseName = @"myDefaultDB";
    return settings;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [DBAccess setDelegate:self];
    [DBAccess openDatabaseNamed:@"NSURLProtocolExample"];    
    [NSURLProtocol registerClass:[MyURLProtocol class]];
    return YES;
}

但是使用上面的代码,我收到以下错误消息:

错误>>无法打开数据库文件

你能在这里阐明一下吗?

4

1 回答 1

1

我不熟悉 DBAccess,但你有以下几行:

NSURL *applicationCachesDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
settings.databaseLocation = [applicationCachesDirectory absoluteString];

这将检索一个 URL 字符串(以 开头file://),而不是文件路径。如果你想要那个文件夹的路径,你想使用path

settings.databaseLocation = [applicationCachesDirectory path];

坦率地说,文档对于它是否期望 URL 字符串或路径是模棱两可的,但我认为它期望后者。

于 2015-01-26T17:07:59.950 回答