gpt4 book ai didi

ios - 带有核心数据的预加载数据库

转载 作者:行者123 更新时间:2023-11-28 23:01:44 24 4
gpt4 key购买 nike

我正在尝试为我的通用应用程序使用预加载的 Sqlite 数据库,该应用程序使用核心数据。它用于 iOS 4.3,但不适用于 iOS 5.0+,我使用的是 Xcode 4.3。

我查看了下面的链接,进行了更改,又改回原样,但无济于事,现在预加载根本不起作用。

Prepopulate Core Data in iOS 5

coredata problem nsurl may not respond to stringByAppendingPathComponent

我做错了什么,我在下面列出了我的代码,我们将不胜感激。感谢您的宝贵时间。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{

if (persistentStoreCoordinator != nil)
{
return persistentStoreCoordinator;
}

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"SAP_ECC_DB.sqlite"];
//NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"SAP_ECC_DB.sqlite"];

//Set up the store.
//For the sake of illustration, provide a pre-populated default store.
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath])
{
NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"SAP_ECC_DB" ofType:@"sqlite"];
if (defaultStorePath)
{
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];

NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}



- (NSString *)applicationDocumentsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
//return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

最佳答案

有时,尤其是在 XCode 4.3 中,即使您将资源添加到项目文件列表中,它也不会包含在最终产品中,或者会无缘无故地被删除。如果您遇到产品未更新、未显示或因任何原因未正常运行的问题,请检查以确保它确实包含在“复制捆绑资源”中(有时甚至 .m 文件会丢失,这些将在您项目的“构建阶段”选项卡的“编译源代码”中。

这个特别棘手,因为如果一个数据库不存在,Core Data 将创建一个新数据库,使它看起来好像没有复制,而实际上它一开始就不存在。

关于ios - 带有核心数据的预加载数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com