Chamei isso para obter uma matriz de nomes de atributos de um AXUIElement element
.
var attrNames: CFArray? = nil;
AXUIElementCopyAttributeNames(element, &attrNames);
Pelo que entendi, é attrNames
um CFArray
de CFString
.
Eu então chamo:
var foo = CFArrayGetValueAtIndex(attrNames!, idx)
Em Objective-C, essa chamada correspondente retorna um NSArray*
of CFString*
. Como acesso as strings individuais desse array em Swift?
Eu tentei isso:
let attrName : NSString = (NSString) CFArrayGetValueAtIndex(attrNames!, index);
mas não compilará:
Cannot convert value of type '(NSString).Type' to specified type 'NSString'
Eu também tentei CFString
em vez de NSString
, mas recebi uma mensagem semelhante.
Não use CFArray de forma alguma; ele não é Swift. Converta o CFArray com segurança para um array Swift de String e então fale Swift, usando subscripting para indexar o array como de costume. Assim, por exemplo: