swift nsarray ios9 google-maps-sdk-ios

Referencia ambigua al miembro ''joinWithSeparator'' en swift



nsarray ios9 (1)

Es ambiguo porque la matriz puede contener AnyObject significa que cada objeto de la matriz podría ser de un tipo diferente. Por lo tanto, el compilador no puede saber de antemano si se pueden unir dos objetos de la matriz.

La razón por la que funciona sampleArray es que se ha determinado implícitamente que es una matriz de cadenas.

Si sabe a ciencia cierta que cada elemento de la matriz de lines es una cadena, puede forzarla a una matriz de cadenas:

let addressString = (gmsAddress.lines as! [String]).joinWithSeparator("")

Aunque probablemente valga la pena estar seguro sobre esto y verificar primero.

if let lines = gmsAddress.lines as? [String] { let addressString = lines.joinWithSeparator(", ") ... }

Estoy usando la " reverseGeocodeCoordinate de reverseGeocodeCoordinate de reverseGeocodeCoordinate " de reverseGeocodeCoordinate para obtener la dirección según la latitud y la longitud.
Estoy recibiendo el siguiente error en la implementación

Referencia ambigua al miembro ''joinWithSeparator''

A continuación se muestra mi implementación:

let aGMSGeocoder: GMSGeocoder = GMSGeocoder() aGMSGeocoder.reverseGeocodeCoordinate(CLLocationCoordinate2DMake(17.45134626, 78.39304448)) { (let gmsReverseGeocodeResponse: GMSReverseGeocodeResponse!, let error: NSError!) -> Void in let gmsAddress: GMSAddress = gmsReverseGeocodeResponse.firstResult() print("lines=/(gmsAddress.lines)") let addressString = gmsAddress.lines.joinWithSeparator("") print("addressString=/(addressString)") }

Estoy tratando de crear una addressString con los elementos en la matriz '' gmsAddress.lines '', pero termino con un mensaje de error.

Implementé algunos fragmentos de muestra para probar '' joinWithSeparator ''

let sampleArray = ["1", "2", "3", "4", "5"] let joinedString = sampleArray.joinWithSeparator("") print("joinedString=/(joinedString)")

Tuvo éxito
Lo que observo es que '' sampleArray '' es una matriz de elementos de tipo String , pero '' gmsAddress.lines '' es una matriz de elementos de tipo '' AnyObject '', que se encuentra en la biblioteca '' GMSAddress '':

/** An array of NSString containing formatted lines of the address. May be nil. */ public var lines: [AnyObject]! { get }

Entonces, ¿Cuáles son las formas posibles de lograr la siguiente línea sin hacer un bucle en la matriz:

let addressString = gmsAddress.lines.joinWithSeparator("")