vaguedad tipos juridico juridica ejemplos campo ambigüedad ambiguedad macos swift3

macos - tipos - ejemplos de vaguedad en el campo juridico



Referencia ambigua al ''subíndice'' del miembro (2)

Recibí este error en mi código:

func getBatteryInfos(){ let snapshot = IOPSCopyPowerSourcesInfo().takeRetainedValue() // Pull out a list of power sources let sources = IOPSCopyPowerSourcesList(snapshot).takeRetainedValue() as Array // For each power source... for ps in sources { // Fetch the information for a given power source out of our snapshot let info = IOPSGetPowerSourceDescription(snapshot, ps).takeUnretainedValue() as Dictionary // Pull out the capacity if let capacity = info[kIOPSCurrentCapacityKey] as? Double, //Ambiguous reference to member ''subscript'' let charging = info[kIOPSIsChargingKey] as? Int{ //Ambiguous reference to member ''subscript'' batteryPercentage = capacity batteryState = charging print("Current battery percentage /(batteryPercentage)") print("Current state /(batteryState)") } }

Traté de reemplazar la info[kIOPSCurrentCapacityKey] con info["kIOPSCurrentCapacityKey"] pero ocurre el mismo error. Vi algunas preguntas sobre este error en StackOverflow pero todas las respuestas no funcionan con mi código.

Estoy trabajando con Xcode 8 Beta 6 y Swift3. En Swift 2, este código funcionó perfectamente.

Cualquier ayuda es apreciada :-)


No puede convertir a un diccionario o matriz Swift sin tipo. Cambio

as Dictionary as Array

a

as NSDictionary as NSArray

O bien, si conoce los tipos reales (es decir, ¿de qué se trata esto? ¿De qué es este diccionario ? ), Elimine esos tipos reales.

Otro enfoque es usar los nuevos tipos sin tipo, [Any] y [AnyHashable:Any] . Pero esto puede ser un poco complicado, en mi experiencia. Básicamente, Apple ha destruido el puente automático entre Objective-C y Swift y lo ha reemplazado con "boxeo permisivo", y esto causa algunos desajustes de tipo que tiene que compensar usted mismo.


encontré esto

Tengo el mismo problema

if let paymentDict = dict["payment"] as? Dictionary { self.payment = OrderPayment(dict: paymentDict) }

luego agrego un tipo más específico de diccionario

if let paymentDict = dict["payment"] as? Dictionary<String,AnyObject> { self.payment = OrderPayment(dict: paymentDict) }

Me funciona