我一直在与核心数据打交道。我查看了示例和文档,但它们似乎都将现有的SQLite DB复制到工作目录中。我已经定义了我的数据模型,只是希望Core Data创建一个SQLite DB。然后我会在我的应用程序中填充db。
谁能告诉我怎么样?
答案 0 :(得分:5)
你读过哪本书?我想你总会找到一些奇怪的例子......无论如何。我查看了示例和文档,但它们似乎都将现有的SQLite数据库复制到工作目录中。
这很容易。
NSPersistentStoreCoordinator
并将其与addPersistentStoreWithType:configuration:URL:options:error:
绑定到文件名。 (此阶段不必存在该文件。也许这部分让您感到困惑。您需要指定稍后保存数据的文件名。)NSManagedObjectContext
。在此阶段,核心数据的设置已准备就绪。接下来,
NSEntityDescription
。[[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:moc]
在此阶段,将一个对象插入上下文,但不会保存到磁盘。当你完成后,你做
[moc save:&error];
这将在磁盘上创建SQL文件。您应该检查Apple本身提供的示例,这些示例已经在此处与其他海报相关联。另请阅读Apple自己提供的教程like this。他们非常好。
另外,购买Marcus Zarra的Core Data Book,这非常好并且帮了我很多。
答案 1 :(得分:1)
您可以执行以下操作来设置持久性存储协调器&创建数据库(代码取自Apple“Recipes”示例应用程序)
NSString *storePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent:@"MyDB.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSError *error;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel: [self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
答案 2 :(得分:1)
SQLite是自动创建的,但仅当数据库尚不存在时
从iPhone /模拟器中删除应用程序以进行清理
答案 3 :(得分:0)
最简单的方法是使用包含Core Data的Xcode模板生成已配置的项目。查看persistentStoreCoordinator
方法,了解它们如何定义持久性存储的位置和类型。 Core Data Programming Guide也有说明。默认值为XML,但您可以轻松将其更改为NSSQLiteStoreType
。您的程序将在第一次运行时生成新数据库。