Bitcast di errore Swift Compile richiede che entrambi gli operandi siano il puntatore o né

StackOverflow https://stackoverflow.com//questions/25089448

  •  02-01-2020
  •  | 
  •  

Domanda

in XCode6 Beta 1 Qualcosa di simile a questo funzionava, tuttavia con XCode6 Beta 4 c'erano errori. Dopo aver fissato gli errori, il codice senza errori che ho è sotto

per lo sfondo : La classe che sto usando qui implementa ABPeoplePickerNavigationControllerDelegate che consente all'utente di selezionare un contatto dalla rubrica. Voglio ottenere la prima email che viene aggiunta a quella persona.

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!,didSelectPerson person: ABRecordRef!) {

    var emails = ABRecordCopyValue(person, kABPersonEmailProperty)
    var emailsObj = emails.takeUnretainedValue() as AnyObject
    var index = 0 as CFIndex
    var emailAddress = ABMultiValueCopyValueAtIndex(emailsObj, index)

    println(emailAddress)
}
.

Tuttavia quando compilo ottengo Build Build:

Bitcast richiede che entrambi gli operandi siano il puntatore o né % 80= Bitcast% objc_object *% 79 a% PSS9anyObject_ ,! DBG! 860 Il tipo di valore memorizzato non corrisponde al tipo di operand del puntatore! Store% PSS9anyObject_% 80,% Objc_object **% 81, Allinea 4 ,! DBG! 860 % OBJC_Object * Tipo di valore memorizzato non corrisponde al tipo di operandi puntatore! Store% PSS9anyObject_% 80,% OBJC_Object **% 85, Allinea 4 ,! DBG! 864 % objc_object * llvm Errore: Funzione rotta trovata, compilation abort! Comando /Applications/xCode6-Beta4.App/Contents/Developer/toolchains/xcodedefault.xctoolchain/usr/bin/swift fallito con codice di uscita 1

Le linee sospette sono:

var emailsObj = emails.takeUnretainedValue() as AnyObject
var emailAddress = ABMultiValueCopyValueAtIndex(emailsObj, index)
.

Quando modifico il codice in

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!,didSelectPerson person: ABRecordRef!) {

    var emails = ABRecordCopyValue(person, kABPersonEmailProperty)
    var emailsObj:AnyObject? = emails.takeRetainedValue() as AnyObject
    var index = 0 as CFIndex
    var emailAddress = ABMultiValueCopyValueAtIndex(emailsObj, index)

    println(emailAddress)
}
.

L'errore si accorcia a

Bitcast richiede che entrambi gli operandi siano il puntatore o né % 79= Bitcast% objc_object *% 78 a% PSS9anyObject_ ,! DBG! 856 Il tipo di valore memorizzato non corrisponde al tipo di operand del puntatore! Store% PSS9anyObject_% 79,% objc_object **% 80, Allinea 8 ,! DBG! 856 % objc_object * llvm Errore: Funzione rotta trovata, compilation abort! Comando /Applications/xCode6-Beta4.App/Contents/Developer/toolchains/xcodedefault.xctoolchain/usr/bin/swift fallito con codice di uscita 1

Grazie in anticipo per qualsiasi aiuto

Aaron

È stato utile?

Soluzione

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!,didSelectPerson person: ABRecordRef!) {

    var unmanagedEmails = ABRecordCopyValue(person, kABPersonEmailProperty)
    let emailObj: ABMultiValueRef = Unmanaged.fromOpaque(unmanagedEmails.toOpaque()).takeUnretainedValue() as NSObject as ABMultiValueRef

    var index = 0 as CFIndex

    var unmanagedEmail = ABMultiValueCopyValueAtIndex(emailObj, index)
    var emailAddress:String = Unmanaged.fromOpaque(unmanagedEmail.toOpaque()).takeUnretainedValue() as NSObject as String

    println(emailAddress)

}
.

Più risposta completa può essere trovato qui . .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top