由于我不熟悉应用程序编程,可能还有很多其他问题我甚至都不知道。
我最初在应用程序中创建了数据库,将其复制到我的工作文件夹(可能不是它应该最终驻留的位置),然后从文本文件中添加我的记录(大约1,000个)。
首先想到的两个问题是: - 数据库应该在哪个文件夹中? - 如何使用该应用程序进行部署?
我发现很少有例子在persistentStoreCoordinator函数中使用以下几行:
NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myDatabase.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
但第一行给出了预编译错误:“实例消息的接收器类型'NSURL'没有声明带有选择器'stringByAppendingPathComponent:'的方法。为什么它对我不起作用?
这实际上是将数据库与应用程序其余部分捆绑在一起的最佳方法吗?
谢谢!
答案 0 :(得分:1)
最简单的解决方案是使用NSUrl而不是NSString。 SO用户@trapper已在下面的链接中提供了解决方案。
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];
}
}