Swift 컴파일 오류 비트 캐스트는 두 피연산자가 포인터가되거나 둘 다 필요하지 않습니다.

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

  •  02-01-2020
  •  | 
  •  

문제

Xcode6 베타 1이 작업과 비슷한 것으로 나타나면 Xcode6 베타 4가있는 오류가있었습니다. 오류를 수정 한 후 오류없는 코드는 아래

이하입니다.

배경 : 여기에서 사용하고있는 클래스는 ABPeoplePickerNavigationControllerDelegate를 구현하여 사용자가 주소록에서 연락처를 선택할 수있게 해줍니다. 나는 그 사람에게 추가 된 첫 번째 이메일을 얻고 싶습니다.

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, ALIGN 4, ALIZ! 860 % OBJC_OBJECT * 저장된 값 유형이 포인터 피연산자 유형과 일치하지 않습니다! 저장 % PSS9ANYOBJECT_ % 80, % OBJC_OBJECT ** % 85, ALIGN 4, ALIZ! 864 % OBJC_OBJECT * LLVM 오류 : 깨진 기능이 발견 된 컴파일이 중단되었습니다! 명령 / applications/xcode6-beta4.app/contents/developer/toolchains/xcodeDefault.xctoolchain/usr/bin/usspt

로 실패했습니다.

의심스러운 선은 다음과 같습니다.

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, ALIGN 8,! DBG! 856 % OBJC_OBJECT * LLVM 오류 : 깨진 기능이 발견 된 컴파일이 중단되었습니다! 명령 / applications/xcode6-beta4.app/contents/developer/toolchains/xcodeDefault.xctoolchain/usr/bin/usspt

로 실패했습니다.

도움말

에 미리 감사드립니다.

아론

도움이 되었습니까?

해결책

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)

}
.

더 많은 완전한 답변을 찾을 수 있습니다 여기 ./ P>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top