SyncCredentials在Realm Swift中不存在

时间:2017-07-22 16:13:11

标签: swift xcode realm

我试图将我的应用程序连接到Realm对象服务器。文档说,要执行此操作,请使用以下内容:

// 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简单地将我的应用程序与Realm对象数据库连接(或者你应该这样做)。一整天都把我的头发拉出来,肯定不会那么难: - (

2 个答案:

答案 0 :(得分: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未找到错误,可能您没有正确设置RealmSwift框架。请添加更多信息,说明您是如何设置Realm的。

答案 1 :(得分:1)

Swift软件包管理器无法正确加载SyncCredentials或SyncUser。

我正在使用SPM安装RealmSwift作为IceCream的依赖项。我从SPM中删除了Realm和IceCream。然后使用迦太基进行安装以解决该问题。