Erreur de compilation SWIFT Bitcast nécessite que les deux opérandes soient du pointeur ou non

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

  •  02-01-2020
  •  | 
  •  

Question

dans xcode6 bêta 1 quelque chose de similaire à cela a fonctionné, cependant avec XCode6 Beta 4, il y avait des erreurs. Après avoir corrigé les erreurs, le code sans erreur que j'ai est inférieur

pour fond : La classe que j'utilise ici implémente ABPeoplePickerNavigationControllerDelegate qui vous permet à l'utilisateur de sélectionner un contact dans le carnet d'adresses. Je veux obtenir le premier email ajouté à cette personne.

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)
}

Cependant, lorsque je compile, je reçois la construction a échoué:

Bitcast nécessite que les deux opérandes soient du pointeur ou non % 80= Bitcast% Objc_Object *% 79 à% PSS9AnyObject_ ,! DBG! 860 Type de valeur stockée ne correspond pas à l'opérande de pointeur Type! Store% PSS9AnyObject_% 80,% Objc_Object **% 81, Align 4 ,! DBG! 860 % objc_object * Type de valeur stockée ne correspond pas au type de pointeur de l'opérande! Store% PSS9AnyObject_% 80,% objc_Object **% 85, Align 4 ,! DBG! 864 % Erreur Objc_Object * LLVM: fonction cassée trouvée, compilation avortée! Commande /applications/xcode6-beta4.app/Contents/Developer/Toolchains/xcodedefault.xcctoolchain/usr/bin/swift a échoué avec le code de sortie 1

Les lignes suspectes sont:

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

Quand je change le code sur

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'erreur raccourcit à

Bitcast nécessite que les deux opérandes soient du pointeur ou non % 79= Bitcast% objc_Object *% 78 à% PSS9AnyObject_ ,! DBG! 856 Type de valeur stockée ne correspond pas à l'opérande de pointeur Type! Store% PSS9AnyObject_% 79,% Objc_Object **% 80, Align 8 ,! DBG! 856 % Erreur Objc_Object * LLVM: fonction cassée trouvée, compilation avortée! Commande /applications/xcode6-beta4.app/Contents/Developer/Toolchains/xcodedefault.xcctoolchain/usr/bin/swift a échoué avec le code de sortie 1

Merci d'avance pour toute aide

AARON

Était-ce utile?

La solution

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)

}

La réponse plus complète peut être trouvée ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top