¡Lanzado desde 'FIRRemoteConfigValue!' a un tipo no relacionado 'String' siempre falla

Tengo alnetworkingedor de 50 de esta misma advertencia en mi proyecto. Desde la actualización, todas mis funciones donde llamo snapshot.value["something"] as! String snapshot.value["something"] as! String está fallando. Todos solían trabajar antes. Ni siquiera estoy usando la function RemoteConfig. Solo quiero recuperar datos.

Ejemplo de mi class de usuario:

 init(snapshot: FIRDataSnapshot) { firstName = snapshot.value!["firstName"] as! String lastName = snapshot.value!["lastName"] as! String } 

Ejemplo de una function (puedo dar más ejemplos pero es básicamente más de lo mismo):

 func loadProfileImage(ref:FIRDatabaseReference) { ref.observeEventType(.Value, withBlock: {snapshot in let base64String = snapshot.value!["profileImgURL"] as! String let decodedData = NSData(base64EncodedString: base64String, options:NSDataBase64DecodingOptions.IgnoreUnknownCharacters) if let decodedImage = UIImage(data: decodedData!) { self.profileImgImageView.contentMode = .ScaleAspectFill self.profileImgImageView.layer.cornerRadius = self.profileImgImageView.frame.size.width / 2 self.profileImgImageView.clipsToBounds = true self.profileImgImageView.image = decodedImage as UIImage } }) } 

La aplicación se ejecuta porque son solo advertencias, pero las advertencias son correctas porque la aplicación falla tan pronto como intenta recuperar cualquier dato.

Entonces aparentemente tener el pod Firebase / RemoteConfig provoca este error. Tan pronto como desinstalé la cápsula, la advertencia desapareció. Definitivamente poniendo esto como un error.

Esto es obviamente un error, pero por el momento creo que encontré un trabajo.

Así fue como obtuve información antes de importar el pod RemoteConfig

Antiguo Código

 let databaseRef = FIRDatabase.database().referenceWithPath("Data"); _ = databaseRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in for (item) in snapshot.children { let someValue = item.value!["someKey"] as? String } } 

Y eso funcionó bien.

Después de agregar pod 'Firebase/RemoteConfig' a mi Podfile e pod install ejecución, se produjo la advertencia que describió anteriormente.

Así es como solucioné el problema.

Nuevo código

 let databaseRef = FIRDatabase.database().referenceWithPath("Data"); _ = databaseRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in if let resources = snapshot.value as? [String : AnyObject] { for (key, obj) in resources { if let dataObject = obj as? [String : AnyObject] { let someValue = dataObject["someKey"] as? String // Other data types still work let someArray = resource["someArrayKey"] as? NSArray let someBool = resource["someBoolKey"] as? Bool } } } } 

La explicación de lanzar el valor a una cadena parecía hacer el truco, al less para mí.

Esto es para una database que se parece a esto:

  - Data - ObjectOne - someKey: 'someStringValue' - ObjectTwo - someKey: 'anotherStringValue' 

La propiedad de valor es un id (AnyObject) y es posible que necesites lanzarlo al dictionary tú mismo.

 let val = snapshot.value as! NSDictionary? firstName = val!["firstName"] as! String 

Sip !!! Finalmente conseguí una solución …

Use valueForKey lugar de [] bracket access value

Entonces todo valor desaparece …

Por ejemplo

 Warning code... 

Debajo del código dar una advertencia …

  let someArray = resource["someArrayKey"] as? NSArray let someBool = resource["someBoolKey"] as? Bool 

Use Like this

  let someArray = resource.valueForKey("someArrayKey") as? NSArray let someBool = resource.valueForKey("someBoolKey") as? Bool 

La advertencia no es más larga …

Esto me ha ayudado:

 if let value = snapshot.value as? [String : AnyObject] { 

esto funciona como encanto para mí, del file / class rápido en el que está utilizando solo la database en time real de Firebase, elimine

import Firebase

y añada

import FirebaseAuth

import FirebaseDatabase

asegúrese de no importar la database de firebase y la configuration remota de base de bomberos en la misma class, esto aparentemente es un error de Google