gpt4 book ai didi

ios - 从现有的 sqlite.db 读取数据正在模拟器上工作,但不是实际设备( Objective-C )

转载 作者:行者123 更新时间:2023-11-28 21:25:43 26 4
gpt4 key购买 nike

我不知道如何解决这个错误,我转到“Build Phases”并将 sqlit.db 文件添加到 Bundle 资源,但它仍然出错。有人解决这个问题吗?

Click Here to see code

-(void) initDatabase{
dbName = @"MBox_karaoke.db";
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writeableDBPath = [documentsDirectory stringByAppendingPathComponent:dbName];
success = [fileManager fileExistsAtPath:writeableDBPath];

if(success){
return;
}

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:dbName];

success = [fileManager copyItemAtPath:defaultDBPath toPath:writeableDBPath error:&error];
if (!success) {
// NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
NSLog(@"Database created failed, %@",[error localizedDescription]);
}
else {
NSLog(@"Database created successfully");
}
}

最佳答案

作为错误状态资源文件未找到。

确保您复制了 bundle 中的数据库文件。当您将数据库拖到项目导航器时,请确保您已选中“如果需要复制项目”。

以下解决方案对我有用。

-(void)initializeDatabase {

NSError *error;
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [docPaths objectAtIndex:0];
NSString *docPath = [docDir stringByAppendingPathComponent:@"Test.sqlite"];

NSString *template_path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"sqlite"];

if (![fm fileExistsAtPath:docPath])
[fm copyItemAtPath:template_path toPath:docPath error:&error];


//-====
}

关于ios - 从现有的 sqlite.db 读取数据正在模拟器上工作,但不是实际设备( Objective-C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180013/

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