我试图将我的应用程序连接到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对象数据库连接(或者你应该这样做)。一整天都把我的头发拉出来,肯定不会那么难: - (
答案 0 :(得分:1)
似乎有些错误。
SyncCredentials
是用于登录的身份验证信息。它不是用户对象。 Realm.Configuration
在初始值设定项中未收到user
和realmURL
个参数。您需要改为使用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。然后使用迦太基进行安装以解决该问题。