gpt4 book ai didi

ios - Realm - 将带有初始数据的文件添加到项目 (iOS/Swift)

转载 作者:IT王子 更新时间:2023-10-29 05:18:43 27 4
gpt4 key购买 nike

我正在使用 swift 开发适用于 iOS 的应用程序,并选择 Realm 作为它的数据库解决方案。我使用 Realm 文档中的写入/添加功能在 AppDelegate 中编写了默认数据,它工作得很好。所以在第一次启动后,我有一个包含我的初始数据的 *.realm 文件。在 Realm 文档中,我找到了一个名为 "Bundling a Realm with an App" 的部分,我将我的 *.realm 文件添加到项目中,并按其编写的方式添加到构建阶段。

而且我不明白我接下来应该做什么(以及关于压缩 *.realm 文件的部分)。我试图理解来自 Migration Example 的代码但我不太了解 Obj-C。

请尽可能给出清晰的步骤,将带有初始数据的 *.realm 文件添加到 swift ios 项目,并在第一次启动时将此数据加载到 Realm 数据库。

最佳答案

在AppDelegate中实现openRealm函数,并在

中调用
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
...
openRealm()

return true
}

func openRealm() {

let defaultRealmPath = Realm.defaultPath
let bundleReamPath = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("default.realm")

if !NSFileManager.defaultManager().fileExistsAtPath(defaultRealmPath) {
NSFileManager.defaultManager().copyItemAtPath(bundleReamPath!, toPath: defaultRealmPath, error: nil)
}
}

它会将您捆绑在应用程序中的 Realm 文件复制到默认 Realm 路径(如果尚不存在)。之后,您可以像以前一样正常使用 Realm。

还有您在 Swift 中谈到的迁移示例.

在 Swift 3.0.1 中你可能更喜欢这个:

    let defaultRealmPath = Realm.Configuration.defaultConfiguration.fileURL!
let bundleRealmPath = Bundle.main.url(forResource: "seeds", withExtension: "realm")

if !FileManager.default.fileExists(atPath: defaultRealmPath.absoluteString) {
do {
try FileManager.default.copyItem(at: bundleRealmPath!, to: defaultRealmPath)
} catch let error {
print("error copying seeds: \(error)")
}
}

(但请注意选项)

关于ios - Realm - 将带有初始数据的文件添加到项目 (iOS/Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476179/

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