Ios 将多个匿名用户数据与Firebase合并

Ios 将多个匿名用户数据与Firebase合并,ios,swift,firebase,firebase-authentication,Ios,Swift,Firebase,Firebase Authentication,在我的应用程序中,用户可以在设备之间不同步待办事项列表的情况下工作。在这种情况下,我使用匿名用户帐户。 在AppDelegate.swift中: FIRAuth.auth()?.addStateDidChangeListener { auth, user in if user != nil { print("User auth with account") } else { FIRAu

在我的应用程序中,用户可以在设备之间不同步待办事项列表的情况下工作。在这种情况下,我使用
匿名
用户帐户。 在
AppDelegate.swift
中:

FIRAuth.auth()?.addStateDidChangeListener { auth, user in
            if user != nil {
                print("User auth with account")
            } else {
                FIRAuth.auth()?.signInAnonymously() { (user, error) in
                    if FIRAuth.auth()?.currentUser != nil {
                        print("User auth anonymously")
                    } else {
                        print(error)
                    }
                }
            }
        }
现在,如果用户想要同步todo列表,他应该登录。我使用此函数执行此操作:

let credential = FIREmailPasswordAuthProvider.credential(withEmail: self.textFieldLoginEmail.text!, password: self.textFieldLoginPassword.text!)
    FIRAuth.auth()?.currentUser?.link(with: credential, completion: { user, error in
        if error == nil {
            FIRAuth.auth()!.signIn(withEmail: self.textFieldLoginEmail.text!,
                                   password: self.textFieldLoginPassword.text!)
        }
    })
我在Firebase中存储todo项,如:

todoitems
----user_id
--------todo-item_id 

但当我登录时,“匿名”账户的所有数据都丢失了。为什么?它应该将此“匿名”帐户合并到现有及其所有数据中。或者我应该手动执行此操作?

您应该链接帐户,而不是登录。
请参见

您希望合并哪些数据?你是指用户在Firebase中的帐户吗?或在数据库中?数据是Firebase中的数据,除非删除数据,否则数据不会丢失。开发人员控制可以访问哪些数据。这个问题非常含糊,如中所示;如果有50个匿名用户,您如何知道哪些数据属于每个匿名用户?Firebase没有合并功能,因此编码应用程序以允许当前用户也访问匿名数据是代码的一个功能。请澄清问题,以便我们尝试回答。@Jay好的,很抱歉问题不清楚。例如,每个用户都有一个待办事项列表。所以,当我链接帐户时,我应该手动将每个项目所有者更改为新用户?如果您使用匿名登录,那么每个用户本质上都是相同的用户,因为他们都是匿名的。在代码和Firebase结构中,您是如何为每个匿名用户分隔待办事项列表的?当实际用户使用用户帐户登录时,您如何知道哪些匿名数据属于该用户?@Jad您所说的“如果您使用匿名登录,那么每个用户本质上都是相同的用户,因为他们都是匿名的。”?它们本质上并不相同。每个经过匿名身份验证的用户都有自己唯一的UID。