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