【问题标题】:RLMRealm(path:) Argument labels '(path:)' do not match any available overloadsRLMRealm(path:) 参数标签 '(path:)' 不匹配任何可用的重载
【发布时间】:2016-12-01 23:46:08
【问题描述】:

我刚刚尝试为 Swift 3 安装最新版本的 Realm (2.1.0),但在这一行出现错误:let realm = RLMRealm(path: databasePath) - DataManager.swift:258:21:参数标签 '(path:)' 不匹配任何可用的重载 参数的声明在这里: var databasePath : 字符串

我知道 swift 3 的第一个参数需要标签,但我到处寻找替代品,但找不到答案。

【问题讨论】:

    标签: swift3 realm


    【解决方案1】:

    + [RLMRealm realmWithPath:] 是一个在数月前被弃用并从 Realm 中完全删除的 API。它被替换为+ [RLMRealm realmWithConfiguration:],您可以在其中提供一个RLMRealmConfiguration 对象,并在其fileURL 属性中设置目标文件的文件路径。

    let configuration = RLMRealmConfiguration.defaultConfiguration()
    configuration.fileURL = URL(path: databasePath)
    let realm = RLMRealm(configuration: configuration)
    

    附带说明,除非您有特定原因在 Swift 中使用 Realm 的 Objective-C 版本,否则我强烈建议您改用 the native Swift version of Realm。在 Swift 3 中应该更容易,并且感觉更自然。:)

    【讨论】:

    • 感谢 TiM,我是该项目的新手,并且在 6 个月前某些开发人员中断的地方继续工作。我怀疑我有一些严肃的家务要做,因为该项目还有大量 Realm.h 和其他东西。
    • 感谢 TiM,我是该项目的新手,并且在 6 个月前某些开发人员中断的地方继续工作。我怀疑我有一些严肃的家务要做,因为该项目还有大量的 Realm.h 和其他东西。也就是说,我确实找到了一个临时解决方法,这是因为 RLMRealm(_:) 的参数正在寻找一个 url 而不是一个字符串。所以解决方法是:var databasePath : URL,然后让 realm = RLMRealm(url: databasePath)。但我想如果我遵循使用原生 Swift 版本的 Realm 的建议,所有这一切都会改变。
    猜你喜欢
    • 2017-08-12
    • 2016-12-16
    • 2018-04-02
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多