Bitcast Bitcast Compiele Swift требует, чтобы оба операнда были указатель или ни один
Вопрос
в Xcode6 Beta 1 что-то похожее на это сработало, однако с XCode6 Beta 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)
}
.
Однако, когда я компилирую, я получаю неудачу, не удалось:
Подозреваемые линии:
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)
}
.
Ошибка сокращения для
заранее спасибо за любую помощь
Aaron
Решение
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)
}
.
Более полный ответ можно найти здесь . .