【问题标题】:SyncCredentials Don't exist in Realm SwiftRealm Swift 中不存在 SyncCredentials
【发布时间】:2017-07-22 16:13:10
【问题描述】:

我正在尝试将我的应用程序连接到领域对象服务器。文档说,要做到这一点,您可以使用以下内容:

// create a configuration object
let realmUrl = URL(string: "realms://example.com:9000/~/settings")!
let realmUser = SyncCredentials.usernamePassword(username: username,     password: password)
let config = Realm.Configuration(user: realmUser, realmURL: realmUrl)

// open the Realm with the configuration object
let settingsRealm = try! Realm(configuration: config)

但是对于 SyncCredentials.usernamePassword,XCode 说 SyncCredentials 不存在。从外观上看,您需要在 Realm.configuration 中设置 SyncConfiguration(或我能找到的唯一文件 RealmConfiguration.swift)

现在我在那个文件中没有使用 SyncCredentials 的选项

我的问题是,我如何简单地使用 SyncCredentials 将我的应用程序与领域对象数据库连接起来(或者你应该这样做)。整天都在拉我的头发,肯定不会那么难:-(

【问题讨论】:

    标签: swift xcode realm


    【解决方案1】:

    似乎有些错误。

    SyncCredentials 是用于登录的身份验证信息。它不是用户对象。 Realm.Configuration 在初始化程序中不接收 userrealmURL 参数。您需要改用SyncConfiguration

    使用现有用户登录或实例化 Realm 的示例代码如下。

    let syncServerURL = URL(string: "realm://example.com:9080/~/settings")!
    let syncAuthURL = URL(string: "http://example.com:9080")!
    
    if let user = SyncUser.current {
        let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: syncServerURL))
        let realm = try! Realm(configuration: config)
        ...
    
    } else {
        let username = ...
        let password = ...
    
        let credentials = SyncCredentials.usernamePassword(username: username, password: password)
        SyncUser.logIn(with: credentials, server: syncAuthURL) { user, error in
            DispatchQueue.main.async {
                if let user = user {
                    let config = Realm.Configuration(syncConfiguration: SyncConfiguration(user: user, realmURL: syncServerURL))
                    let realm = try! Realm(configuration: config)
                    ...
    
                } else {
                    // Handle error
                }
            }
        }
    }
    

    请再次阅读我们的文档https://realm.io/docs/swift/latest/#sync

    还有我们的 RealmTasks 示例项目可以帮助您了解交互的 Realm 对象服务器。 https://github.com/realm-demos/realm-tasks

    如果您在上面的代码中仍然看到SyncCredentials not found 错误,可能是您没有正确设置 RealmSwift 框架。请添加更多信息,说明您是如何设置 Realm 的。

    【讨论】:

      【解决方案2】:

      Swift Package Manager 无法正确加载 SyncCredentials 或 SyncUser。

      我使用 SPM 安装 RealmSwift 作为 IceCream 的依赖项。我从 SPM 中删除了 Realm 和 IceCream。然后使用 Carthage 安装解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多