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" будет необязательной строкой.