Невозможно вызвать инициализатор для типа "String" со списком аргументов типа "(RemoteConfigValue)"

Я пытаюсь получить строку (внутри объекта) в Firebase (используя Swift)


let currentDocument = db.collection("countries").document("United States")

        currentDocument.getDocument { (document, error) in
            if let document = document, document.exists {
                let cities = document.data()!["cities"] as? [AnyObject] // This grabs data from a Firebase object named `cities`, inside the object there are arrays that have two pieces of data (e.g. ["cityName" : "New York", "currentTemperature" : 38])
                for i in 0..<cities!.count {
                    let cityName = String(cities![i]["cityName"]!) // Here is where I get the error `Cannot invoke initializer for type 'String' with an argument list of type '(RemoteConfigValue)'`
                }
            } else {
                print("Document does not exist")

            }
        }

После поиска этой ошибки нормальные решения, которые я нашел, похожи на Вот эти

Но даже после применения этих решений, например:


if let cityName = cities![i]["cityName"]! as? String {
  print(cityName)
}

Я все еще получаю сообщение об ошибке, например Cast from 'RemoteConfigValue' to unrelated type 'String' always fails

Как мне это решить?

Во-первых, вам не нужно использовать RemoteConfigValue с кодом или задачей, представленной в вопросе. Во-вторых, приложите скриншот структуры вашего FireStore и более четкое объяснение того, что вы пытаетесь сделать. Пока мы этого не получим, ответы будут присылать вам все указания, которые могут быть неправильными для вашего варианта использования.

Jay 29.03.2019 18:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
496
2

Ответы 2

Пожалуйста, прочтите документация

class RemoteConfigValue : NSObject, NSCopying

This class provides a wrapper for Remote Config parameter values, with methods to get parameter values as different data types.

Так что вам нужно написать что-то вроде этого

if let cities = document.data()!["cities"] as? [[String:Any]] { // cities is obviously an array of dictionaries
   for city in cities { // don't use index based loops if you actually don't need the index
       if let cityName = city["cityName"] as? RemoteConfigValue {
          print(cityName.stringValue)
       }
   }
}

Это не сработало, но я не понимаю, почему? Логика кажется хорошей, и если я это сделаю print(city), она будет нормально напечатана... Но все остальное возвращает nil

Richard Reis 29.03.2019 10:01

Попробуй это

let currentDocument = db.collection("countries").document("United States")

        currentDocument.getDocument { (document, error) in
            if let document = document, document.exists {
                let cities = document.data()!["cities"] // This grabs data from a Firebase object named `cities`, inside the object there are arrays that have two pieces of data (e.g. ["cityName" : "New York", "currentTemperature" : 38])
                for i in 0..<cities!.count {
                    if let cityName = cities[i]["cityName"]! as? String {
                      print(cityName)
                    }
                }
            } else {
                print("Document does not exist")

            }
        }

Другие вопросы по теме

Объявление свойства универсального протокола
Как обрабатывать время и функциональность таймера в ячейке UITableView
Разница между случаями переключения «@unknown default» и «default» в Swift 5
Есть ли различия между "navigationController?.pushViewController" и "performSegue"
Push-уведомления принимаются, но фоновая выборка не вызывается с тегом pn_apns при отправке сообщения в чате PubNub
Я использую xlpagertabstrip. Я хочу регулярно отправлять некоторые данные от родителя до дочернего контроллера после загрузки контроллера просмотра
Обрабатывать push-уведомления, когда приложение находится в фоновом режиме или в рабочем состоянии, а не когда приложение завершено
Обработка приложения завершается с ошибкой с сообщением «Эта сборка недействительна»
Не удается импортировать модуль модуля, который был установлен?
Как программно добавить несколько кнопок в представление стека, используя массив

Похожие вопросы

Граница не применяется к полному просмотру
Как обрабатывать время и функциональность таймера в ячейке UITableView
Push-уведомления принимаются, но фоновая выборка не вызывается с тегом pn_apns при отправке сообщения в чате PubNub
Я использую xlpagertabstrip. Я хочу регулярно отправлять некоторые данные от родителя до дочернего контроллера после загрузки контроллера просмотра
Обрабатывать push-уведомления, когда приложение находится в фоновом режиме или в рабочем состоянии, а не когда приложение завершено
Обработка приложения завершается с ошибкой с сообщением «Эта сборка недействительна»
Не удается импортировать модуль модуля, который был установлен?
Как получить точку (CGPoint) выбранного sectionIndexTitle
Как программно добавить несколько кнопок в представление стека, используя массив
Как сделать так, чтобы просмотр содержимого в ячейке занимал всю ячейку?