Невозможно вызвать значение нефункционального типа 'Any' - PullRequest
0 голосов
/ 04 мая 2020

я хочу решить эту проблему Cannot call value of non-function type 'Any' это мой код


            databaseRef.child("ServiceA").queryOrderedByKey().observe(.childAdded, with: {
                DataSnapshot in
                let title = DataSnapshot.value!("title") as! String
                self.posts.insert(PostStruct.init(title: title), at: 0)
            })


enter image description here

Есть ли способ исправить это?

Спасибо

1 Ответ

1 голос
/ 04 мая 2020

DataSnapshot.value равен Any, и в соответствии с документацией вы можете преобразовывать его в различные типы.

Возвращаемые типы данных: + NSDictionary + NSArray + NSNumber (также включает логические значения) + NSString

Если я правильно понял ваш урезанный код, в вашем случае вам нужно привести «DataSnapshot» в словарь, чтобы получить доступ с нижним индексом. Вы можете попробовать это:

databaseRef.child("ServiceA").queryOrderedByKey().observe(.childAdded, with: {
                DataSnapshot in
    let title = (snapshot.value as? [String: Any])?["title"] as? String
    self.posts.insert(PostStruct.init(title: title), at: 0)
})

Также обратите внимание, что для предотвращения сбоев я удалил принудительное завершение, так что "title" будет необязательной строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...