Ошибка в функции


#1

Добрый вечер выводится ошибка
Unexpected non-void return value in void
Помоги понять в чем проблема,
Спасибо.

    func loadUserList(email: String, userUid : String) -> String {
        ref = Database.database().reference()
        let strucURL = self.ref.child("profile").observe(DataEventType.value, with: { (snapshot) in
            if (snapshot.value is NSNull) {
                print("Данных нет")
            } else {
                for childSnapshot in snapshot.children {
                    let snap = childSnapshot as! DataSnapshot
                    let dic = snap.value as! [String : AnyObject]
                    let emailText = dic["email"] as! String
                    let isType = dic["position"] as! String
                    if email == emailText {
                        print("Пользователи совпадают \(emailText)  ==  \(email) ")
                        return isType
                    } else {
                        print("Пользователь без роли")
                        return
                    }
                }
            }
            }, withCancel: { (error) in
                print(error.localizedDescription)
        })
    }

#2

Добрый день!
Во-первых используйте подсветку синтаксиса для того, чтобы можно было читать Ваш код.
Во-вторых Ваш код не работает хотя бы из-за того, что Вы написали, что метод возвращает String, а затем написали вот это:

{
    print("Пользователь без роли")
     return
}

Как Вы видите, тут строку Вы точно не возвращаете, а просто выходите из функции.
Можете сделать, что функция возвращает “String?”, тогда можно будет написать так:

{
    print("Пользователь без роли")
     return nil
}

#3

И еще желательно добавить в самый конец функции так же return nil, т.к. когда сработает withCancel, в нем нету возвращаемого типа.


#4

Внутри escaping замыкания?


#5

Сорри! Это я не увидел, я просто просмотрел и увидел if…

Значит пункт 2 не принимайте во внимание!


#6

Коллеги прошу прощение писал с телефона.
Понял в чем проблема переписал функцию
Спасибо

 func loadUserList(useruid : String, complition : @escaping (_ acces: String) -> ()) {
        ref = Database.database().reference()
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
        //loadDataindicator.startAnimating()
        //let key = "1CiTGbab81d9QAiQXHtKqFjjz553"
        //var access_right = ""
        let strucURL = self.ref.child("profile").observe(DataEventType.value, with: { (snapshot) in
            if (snapshot.value is NSNull) {
                print("Пустая база даннаых profile")
            } else {
                for child in snapshot.children {
                    let snap = child as! DataSnapshot
                    if useruid == snap.key {
                        print("ключи совпали : \(useruid) == \(snap.key)  for key :")
                        let dic = snap.value as! [String : AnyObject]
                        let test = dic["access_right"] as! String
                        complition(test)
                    } else {
                        print("Нет такого ключа")
                    }
                }
            }
            //self?.tableView.reloadData()
            UIApplication.shared.isNetworkActivityIndicatorVisible = false
            //self?.loadDataindicator.stopAnimating()
            //self?.loadDataindicator.hidesWhenStopped = true
            
        }, withCancel: { (error) in
            print(error.localizedDescription)
        })
        strucURL
    }
    
}