要在首次启动时在我的应用程序中预先填充CoreData,我已经包含一个PreModel.sqlite文件,该文件以前由应用程序从它从Web服务下载的数据创建,其中包括图片。关于CoreData和预填充模型的问题
要填充模型,我这样做:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSLog(@"creating new store");
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"PreModel.sqlite"];
if(![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {
NSString *sqlitePath = [[NSBundle mainBundle] pathForResource:@"PreModel" ofType:@"sqlite"];
if (sqlitePath) {
NSError *error = nil;
[[NSFileManager defaultManager] copyItemAtPath:sqlitePath toPath:[storeURL path] error:&error];
if (error) {
NSLog(@"Error copying sqlite database: %@", [error localizedDescription]);
}
}
}
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
看来工作。但我有两个问题:
- 如果sqlite文件只是一个数据库文件,并且实际上不包含任何图像,该应用程序如何在第一次启动时查找和加载图像?
- 即使在应用程序的后续运行中,我也会看到每次都会记录“创建新商店”。为什么
_persistentStoreCoordinator
总是零?我清楚地在代码中设置它。
问题1:说说模型的事情?你用来存储图像的属性如何?它是否包含路径或二进制数据? –
问题2:您是否设置了整个Core Data堆栈? –