Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从iOS(Swift)连接到MongoDB_Ios_Swift_Mongodb_Realm - Fatal编程技术网

如何从iOS(Swift)连接到MongoDB

如何从iOS(Swift)连接到MongoDB,ios,swift,mongodb,realm,Ios,Swift,Mongodb,Realm,我使用RealmSwift开发了一个iOS应用程序。 到目前为止,这一切都很好。 现在,随着我越来越接近发布到应用商店,我想设置一些云配置,以便能够连接到云数据库,但我完全搞糊涂了 几周前,我将领域云视为一种选择。现在我只看到MongoDB领域——或者类似的东西。我深入研究了一下,发现有三个组件:realmdb、realmsync和mongodbatlas 如果我的理解是正确的,我必须创建一个Atlas集群,我的领域数据库将托管在该集群上,并且我将能够连接和同步到该集群。我说得对吗 我的主要问题

我使用RealmSwift开发了一个iOS应用程序。 到目前为止,这一切都很好。 现在,随着我越来越接近发布到应用商店,我想设置一些云配置,以便能够连接到云数据库,但我完全搞糊涂了

几周前,我将领域云视为一种选择。现在我只看到MongoDB领域——或者类似的东西。我深入研究了一下,发现有三个组件:realmdb、realmsync和mongodbatlas

如果我的理解是正确的,我必须创建一个Atlas集群,我的领域数据库将托管在该集群上,并且我将能够连接和同步到该集群。我说得对吗

我的主要问题是,我不知道如何将它连接到我现有的代码。我不需要用户身份验证或MongoDB的任何东西,我有自己的,我基本上只有一个DB,我想同步并连接到它。因此,目前在我通常使用的代码中:

let realm = try! Realm()
try! realm.write {
   ...
}
如何在Atlas云中更新它以使用MongoDB?我看了他们的“教程”,但我还是太困惑了

我看到一个
Realm(配置:Realm.configuration)
init函数,但是如果我应该使用这个函数,我应该如何获得Realm.configuration对象

另外,分区键意味着什么


非常感谢。

除了iOS应用程序中的嵌入式数据库之外,我从未将Realm用作其他任何东西。如果您需要在服务器端存储一些东西,那么您应该实现一个API来写入MongoDB(或您使用的任何数据库)。将iOS应用程序直接连接到服务器端数据库对我来说似乎是一种反模式。

除了iOS应用程序中的嵌入式数据库之外,我从未将Realm用作任何东西。如果您需要在服务器端存储一些东西,那么您应该实现一个API来写入MongoDB(或您使用的任何数据库)。将iOS应用程序直接连接到服务器端数据库对我来说似乎是一种反模式。

Realm Sync根据需要连接到Atlas部署以同步数据。我的理解是,您不需要在代码中直接连接到Atlas


提供一些信息,下面几页是示例代码。

Realm Sync根据需要连接到Atlas部署以同步数据。我的理解是,您不需要在代码中直接连接到Atlas


提供了一些信息,下面几页是示例代码。

您的困惑是有道理的。文档和教程仍在进行中,有点脱节。我认为随着时间的推移,情况会有所改善

因此,这不是一个完整教程的好地方,但这里有一个非常高层次的概述

教程的链接-

完成Cocoapods安装

1) 您将在MongoDB控制台中创建集群

2) 在该集群中,您将创建一个领域“应用程序”

3) 在您将要设置的领域“应用程序”中:

  • 同步(开发模式)

  • 用户->提供商->电子邮件/密码验证

您的应用程序将有一个AppId,可以在Atlas控制台的左侧、应用程序名称的右侧找到(这是一个可以单击复制的文档按钮)

然后,在您的XCode领域项目中,您将使用cocoapods来安装RealmSwift

现在谈谈你的问题:

如何将其连接到我的现有代码

添加一个struct,它是Atlas Realm项目的连接字符串

导入RealmSwift

struct Constants {
    // Set this to your Realm App ID found in the Realm UI.
    static let REALM_APP_ID = "your app id"
}
然后,当您想要进行身份验证时,您将这样做

let app = RealmApp(id: Constants.REALM_APP_ID)
app.login(withCredential: AppCredentials(username: username, password: password)) { user, error in
一旦您通过身份验证,要访问领域,请使用

guard let user = app.currentUser() else {
   fatalError("Must be logged in to access this view")
}

let realm = try! Realm(configuration: user.configuration(partitionValue: user.identity!))

你的困惑是有道理的。文档和教程仍在进行中,有点脱节。我认为随着时间的推移,情况会有所改善

因此,这不是一个完整教程的好地方,但这里有一个非常高层次的概述

教程的链接-

完成Cocoapods安装

1) 您将在MongoDB控制台中创建集群

2) 在该集群中,您将创建一个领域“应用程序”

3) 在您将要设置的领域“应用程序”中:

  • 同步(开发模式)

  • 用户->提供商->电子邮件/密码验证

您的应用程序将有一个AppId,可以在Atlas控制台的左侧、应用程序名称的右侧找到(这是一个可以单击复制的文档按钮)

然后,在您的XCode领域项目中,您将使用cocoapods来安装RealmSwift

现在谈谈你的问题:

如何将其连接到我的现有代码

添加一个struct,它是Atlas Realm项目的连接字符串

导入RealmSwift

struct Constants {
    // Set this to your Realm App ID found in the Realm UI.
    static let REALM_APP_ID = "your app id"
}
然后,当您想要进行身份验证时,您将这样做

let app = RealmApp(id: Constants.REALM_APP_ID)
app.login(withCredential: AppCredentials(username: username, password: password)) { user, error in
一旦您通过身份验证,要访问领域,请使用

guard let user = app.currentUser() else {
   fatalError("Must be logged in to access this view")
}

let realm = try! Realm(configuration: user.configuration(partitionValue: user.identity!))

谢谢,我已经检查了文档,但是示例代码()也不起作用-似乎过时了,Xcode无法生成。如果您对提供的代码有问题,可以在问题中提出。谢谢,我已经检查了文档,但是示例代码()也不起作用-似乎过时了,XCODE无法建立。如果您对所提供的代码有问题,您可以在一个问题中问这个问题。我知道,对于Realm,我不必实现自己的服务器端API或任何东西。编写代码,使用领域云(或现在MangoDB/阿特拉斯云?),配置它,并将数据库存储在云中。我知道,对于Realm,我不必实现自己的服务器端API或任何东西。编写代码,使用领域云(或者现在的MongoDB/Atlas云?),对其进行配置,然后将数据库存储在云中。谢谢!我必须设置电子邮件/密码身份验证吗?我在自己的DB表中处理用户,不想使用MongoDB提供的方法。我可以跳过这个,使用应用程序的匿名登录吗?还是创建一个用户更好