gpt4 book ai didi

iphone - iPhone 和模拟器上的 SQLite 数据库

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:44 24 4
gpt4 key购买 nike

我创建数据库并将 *.sqlite 文件放入 Xcode 的 recources 文件夹中。在打开数据库之前,我将其从资源中复制到文档文件夹中。这在模拟器上工作正常,但在 iPhone 上不起作用。由于某些原因,iPhone 设备中不存在数据库文件。这是我的代码:

   NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseFileName];


NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL success = [fileManager fileExistsAtPath:databasePath];
if(!success) // all the time it's YES, even if I delete database
{
// copy database from application folder
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseFileName];
BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];
if (fileExists) { // It's NO, for some reasons database does not exist
[fileManager removeItemAtPath:databasePath error:nil];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}

[fileManager release];
}

return databasePath;

由于某些原因,这一行总是返回 NO

        BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];

databasePathFromApp 中的路径是这样的

/var/alexander/xxx-xxx-xxx-xxx..../AppName.app/database.sqlite

问题是:为什么资源中没有数据库?

最佳答案

终于找到问题了。 iPhone 设备关心文件名注册,所以“database.sqlite”和“DataBase.sqlite”对于设备是不同的文件,但对于模拟器是相同的文件。这太奇怪了。

我发在博客里了 Can't open file in iPhone device, but can in iPhone simulator

关于iphone - iPhone 和模拟器上的 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294058/

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