如何使用 XCode 菜单而不是以编程方式将我的 sqlite 文件从文档目录复制到应用程序包

Posted

技术标签:

【中文标题】如何使用 XCode 菜单而不是以编程方式将我的 sqlite 文件从文档目录复制到应用程序包【英文标题】:How do I copy my sqlite file from documents directory to app bundle using XCode menu and not programmatically 【发布时间】:2013-07-22 22:34:27 【问题描述】:

第一步:我想将一个预先填充的核心数据数据库文件添加到应用程序包,即 .我运行了我的数据加载器应用程序,可以看到下面目录下的文件

/Users//Library/Application Support/iPhone Simulator//Applications//Documents

下一步:我现在想通过 XCode 菜单将上面创建的 *.sqlite 文件添加到我的应用程序包中,如“将文件添加到项目”菜单项中。

我被困在上面的步骤中,在选择'添加文件到'时,无法在Xcode中看到文档文件夹。

我的主应用程序中的逻辑是我需要检查文件文件夹中是否存在文件,如果不从应用程序包中复制。

谢谢

【问题讨论】:

【参考方案1】:

1.将 .sqlite 文件从 finder 拖放到 Xcode 文件部分。

2.从application didFinishLaunchingWithOptions:运行下面的代码

BOOL successBool;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"YourDatabaseName.sqlite"];
successBool = [fileManager fileExistsAtPath:writableDBPath];
if (successBool) 
    return;

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YourDatabseName.sqlite"];
successBool = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!successBool) 
    NSAssert1(0, @"Failed to copy sqlite from app bundle '%@'.", [error localizedDescription]);

【讨论】:

以上是关于如何使用 XCode 菜单而不是以编程方式将我的 sqlite 文件从文档目录复制到应用程序包的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在视图控制器之间传递数据?我想将我的UITextfield数据传递给另一个视图控制器[重复]

快速滑出菜单而不滑动导航栏(以编程方式)

在 build.gradle 中为 Selenium 测试程序定义 WebDriver 路径,而不是以编程方式设置系统属性

如何在 SWIFT 中以编程方式将我的自定义控制器变成根控制器? (无法加载 NIB)

如何在没有 XIB 文件的情况下以编程方式更新 Xcode 中的 UILabel?

何时使用 s3cmd 而不是以编程方式访问 S3 API?