使用app和stringByAppendingPathComponent错误捆绑sqlite数据库

时间:2012-01-04 17:59:30

标签: sqlite compiler-errors xcode4.2 bundle

由于我不熟悉应用程序编程,可能还有很多其他问题我甚至都不知道。

我最初在应用程序中创建了数据库,将其复制到我的工作文件夹(可能不是它应该最终驻留的位置),然后从文本文件中添加我的记录(大约1,000个)。

首先想到的两个问题是: - 数据库应该在哪个文件夹中? - 如何使用该应用程序进行部署?

我发现很少有例子在persistentStoreCoordinator函数中使用以下几行:

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myDatabase.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

但第一行给出了预编译错误:“实例消息的接收器类型'NSURL'没有声明带有选择器'stringByAppendingPathComponent:'的方法。为什么它对我不起作用?

这实际上是将数据库与应用程序其余部分捆绑在一起的最佳方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用NSUrl而不是NSString。 SO用户@trapper已在下面的链接中提供了解决方案。

importing sqlite to coredata

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Database.sqlite"];

// If the database doesn't exist copy in the default one
if (![storeURL checkResourceIsReachableAndReturnError:NULL])
{
    NSURL *defaultStoreURL = [[NSBundle mainBundle] URLForResource:@"Database" withExtension:@"sqlite"];

    if ([defaultStoreURL checkResourceIsReachableAndReturnError:NULL])
    {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
    }
}