xcode 6.2 每次运行应用程序时都会创建一个新的模拟器路径

Posted

技术标签:

【中文标题】xcode 6.2 每次运行应用程序时都会创建一个新的模拟器路径【英文标题】:xcode 6.2 create a new simulator path every time when run the app 【发布时间】:2015-04-03 14:30:29 【问题描述】:

我使用swiftData 将信息存储在sqlite 数据库上,直到今天它可以正常工作,突然它创建了一个新的数据库位置以及模拟器位置 第一次运行时显示

/Users/div/Library/Developer/CoreSimulator/Devices/606D7F8E-2402-4782-ADEE-12725EDB203A/data/Containers/Data/Application/2DB733AF-2544-4256-B1E5-5E8725E51CDF/Documents/DataBase.db

第二次

/Users/div/Library/Developer/CoreSimulator/Devices/606D7F8E-2402-4782-ADEE-12725EDB203A/data/Containers/Data/Application/551991FA-392A-40E9-810E-31CEFCD3069A/Documents/dataBase.db

第三次

/Users/div/Library/Developer/CoreSimulator/Devices/606D7F8E-2402-4782-ADEE-12725EDB203A/data/Containers/Data/Application/03E4BE03-D6E7-47BF-A98D-A129DF09DD28/Documents/DataBase.db

我使用了这个代码

  let fileManager = NSFileManager()
        var Sourcepath = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("PhotoKeeper.db");
        let docsPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
        let databaseStr = "DataBase.db"
        let dbPath = docsPath.stringByAppendingPathComponent(databaseStr)
        println(dbPath)    
        if(fileManager .fileExistsAtPath(dbPath) == false) 


            var error:NSError?
            fileManager.copyItemAtPath(Sourcepath!, toPath: dbPath, error: &error)
            println(error)

        

我的问题是每次创建新的数据库实例时,即如果我插入 2 行并编译并运行应用程序,它将创建具有零行的新数据库

【问题讨论】:

整理了布局和格式。 【参考方案1】:

您应该只保存内容的相对路径(文档、数据库、...),因为带有 ios8 的 XCode(我想)在您构建和运行它时会更改应用程序文件夹。

例如,您的 .db 文件位于 Documents 中,因此只需将链接保存为“DataBase.db”。然后,当你需要访问这个文件时,获取路径为:

let documentsFolder = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
let dbPath = documentsFolder.stringByAppendingPathComponent("Database.db")

【讨论】:

你好,我现在使用相同的代码我的问题是每次创建新的数据库实例时,即如果我插入 2 行并编译并运行应用程序,它将创建具有零行的新数据库 对不起,您给定的代码是 wright 。我在插入逻辑中遇到了问题

以上是关于xcode 6.2 每次运行应用程序时都会创建一个新的模拟器路径的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的函数每次调用时都会创建一个新对象?

每次在纱线中执行批处理作业时都会创建 Spark 上下文

如何创建触发器,以便每次帐户的所有者ID更改时都会创建事件?

每次运行时都没有创建测试数据库的 Django 单元测试

Spring Boot with H2 每次 web 应用启动时都会运行 data.sql,这正常吗?

每次我打开应用程序或从 Xcode 运行它时,IOS 都会创建新的应用程序 ID