升级我的应用程序以包括预先填充的数据

时间:2015-10-27 21:48:04

标签: swift core-data

我决定改进我的初始设计并预先填充我的应用程序的某些部分。我试图按照本教程阅读sqlite:http://www.appcoda.com/core-data-preload-sqlite-database/

然而,代码行如下:

if !NSFileManager.defaultManager().fileExistsAtPath(url.path!) {
    let sourceSqliteURLs =         [NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite")!, NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite-wal")!, NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite-shm")!]

    let destSqliteURLs =   [self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite"),
        self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-wal"),
        self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-shm")]

    var error:NSError? = nil
    for var index = 0; index < sourceSqliteURLs.count; index++ {
        NSFileManager.defaultManager().copyItemAtURL(sourceSqliteURLs[index], toURL: destSqliteURLs[index], error: &error)
    }
}

对我的应用程序来说不太正确,因为我使用的是共享应用程序文件夹。我面临的问题是应用程序加载正常并传递代码行,但当我查看显示信息的页面时,没有任何东西存在。我下载了sqlite阅读器,看看数据库中是否有对象,所以我知道这不是问题。我必须对这些代码行进行哪些修改才能使共享应用程序组正确执行此功能?共享应用程序组的目录是这样的:

let directory = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.groupname.appname")

我正在努力寻找任何有关此信息的信息,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

也许我在你的问题中遗漏了一些东西,但如果你想要做的只是改变目的地目录,那么只需改变这些行......

let destSqliteURLs = [
    self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite"),
    self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-wal"),
    self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-shm")]

进入这个...

let baseURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.groupname.appname")
let destSqliteURLs = [
    baseURL.URLByAppendingPathComponent("CoreDataDemo.sqlite"),
    baseURL.URLByAppendingPathComponent("CoreDataDemo.sqlite-wal"),
    baseURL.URLByAppendingPathComponent("CoreDataDemo.sqlite-shm")]