Swiftコンパイルエラービットキャストでは、両方のオペランドがポインタまたはどちらでもない

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

  •  02-01-2020
  •  | 
  •  

質問

Xcode6 Beta 1では、このうちに似たものがXcode6 Beta 4では、エラーがありました。エラーを修正した後、私が持っているエラーなしコードは

を下回っています

背景: ここで使用しているクラスはABPeoplePickerNavigationControllerDelegateを実装しています。これにより、ユーザーがアドレス帳から連絡先を選択できます。私はその人に追加された最初のEメールを取得したいです。

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

しかし私がコンパイルしたとき私はビルドに失敗した:

ビットキャストでは、両方のオペランドがポインタまたはどちらでもない %80=ビットキャスト%objc_object *%79から%pss9anyObject_、!DBG!860 格納値タイプがポインタオペランドタイプと一致しません。 保存%PSS9AnyObject_%80、%objc_object **%81、整列4、!DBG!860 %objc_object *格納値タイプがポインタオペランドタイプと一致しません! 保存%PSS9AnyObject_%80、%objc_object **%85、整列4、!DBG!864 %objc_object * LLVMエラー:壊れた関数が見つかりました、コンパイルが中止されました! command / applications / code6-beta4.app/contents/developer/toolchains/xcodeDefault.xctoolchain/usr/bin/swiftが終了コード1

疑わしい線は次のとおりです。

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

コードを変更するとき

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

エラーが

に短くなる

ビットキャストでは、両方のオペランドがポインタまたはどちらでもない %79=ビットキャスト%objc_object *%78から%pss9anyObject_、!DBG!856 格納値タイプがポインタオペランドタイプと一致しません。 保存%PSS9AnyObject_%79、%objc_object **%80、整列8、!DBG!856 %objc_object * LLVMエラー:壊れた関数が見つかりました、コンパイルが中止されました! command / applications / code6-beta4.app/contents/developer/toolchains/xcodeDefault.xctoolchain/usr/bin/swiftが終了コード1

あらゆる助けを受けてありがとう

アーロン

役に立ちましたか?

解決

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)

}
.

もっと完全な答えが見つかる可能性があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top