Я пытаюсь создать приложение для социальных сетей, и при этом я пытаюсь создать список друзей в моей базе данных. У меня есть общее представление о том, как будет структурирована база данных, но мне нужна помощь в ее создании, так как я довольно новичок в разработке Swift.
Это моя текущая структура базы данных:
Пользователи
uid_0
имя: "Джон"
электронная почта: "john@gmail.com"
uid_1
имя: "Доу"
электронная почта: "doe@gmail.com"
uid_2
имя: "Пользователь"
электронная почта: "user@gmail.com"
Вот мой регистрационный номер кода контроллера регистрации
import Foundation
import Firebase
import SwiftKeychainWrapper
class SignUpVC: UIViewController {
@IBOutlet weak var emailField: UITextField!
@IBOutlet weak var usernameField: UITextField!
@IBOutlet weak var passField: UITextField!
@IBOutlet weak var cPassField: UITextField!
@IBOutlet weak var SignUpButton: UIButton!
var userUid: String!
var email: String!
var username: String!
var password: String!
var cPassword: String!
var friends: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
// Do any additional setup after loading the view.
}
override func viewDidDisappear(_ animated: Bool) {
if let _ = KeychainWrapper.standard.string(forKey: "uid") {
performSegue(withIdentifier: "toLogin", sender: nil)
}
}
func printAlert(Header: String, Message: String) {
let alert = UIAlertController(title: Header, message: Message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(alert, animated: true)
}
@IBAction func createAccount (_ sender: AnyObject) {
if password != cPassword {
self.printAlert(Header: "Error", Message: "Passwords Do Not Match")
}
else{
guard let email = emailField.text, let password = passField.text, let username = usernameField.text else {
print("Form is not valid")
return
}
Auth.auth().createUser(withEmail: email, password: password, completion: { (res, error) in
if let error = error {
print(error)
if let error = AuthErrorCode(rawValue: error._code) {
switch error {
case .invalidEmail:
self.printAlert(Header: "Error", Message: "invalid email")
case .emailAlreadyInUse:
self.printAlert(Header: "Error", Message: "in use")
default:
self.printAlert(Header: "Error", Message: "Create User Error")
}
}
return
}
guard let uid = res?.user.uid else {
return
}
//successfully authenticated user
let ref = Database.database().reference(fromURL: "https://messagingdemo-af075.firebaseio.com/")
let usersReference = ref.child("users").child(uid)
let values = ["username": username, "email": email, "password": password]
usersReference.child("friends").setValue(self.friends)
usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in
if let err = err {
print(err)
return
}
self.performSegue(withIdentifier: "toHome", sender: nil)
})
})
}
}
}
Я пытаюсь создать структуру базы данных, которая выглядит следующим образом:
Пользователи
uid_1
имя: "Джон"
электронная почта: "john@gmail.com"
Друзья
uid_2: = true
uid_3: = false
uid_2
имя: "Доу"
электронная почта: "doe@gmail.com"
uid_3
имя: "Пользователь"
электронная почта: "user@gmail.com"
Я предполагаю, что для этого мне нужно будет добавить каждый созданный идентификатор пользователя в список друзей каждого пользователя, когда новый пользователь зарегистрируется. Тем не менее, я не понимаю, как написать это программно в быстрой форме и был бы признателен за помощь