이제 Xcode 8로 업데이트하고 Swift 2.3 코드를 Swift 3으로 변환했습니다. Swift 2.3에 포함되지 않은이 코드 줄에는 오류가 있습니다.ABAddressBook fromOpaque fromOpaque (_ :) in Swift 3
func populateFrom(_ addressBook:ABAddressBook)
{
let allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue()
let nPeople = ABAddressBookGetPersonCount(addressBook)
for index in 0..<nPeople
{
let person:ABRecord = Unmanaged<ABRecord>.fromOpaque(OpaquePointer(CFArrayGetValueAtIndex(allPeople, index))).takeUnretainedValue()
}
}
이제 문제는 let person:ABRecord = Unmanaged<ABRecord>.fromOpaque(OpaquePointer(CFArrayGetValueAtIndex(allPeople, index))).takeUnretainedValue()
엑스 코드가 'fromOpaque' is unavailable: use 'fromOpaque(_:UnsafeRawPointer)' instead
하더군요 라인입니다. 하지만 Xcode가 사용법을 알려주고 있다는 것을 알 수는 없지만 현재 사용중인 fromOpaque(value: UnsafeRawPointer)
을 찾을 수 있습니다.
어떻게하면됩니까? 주소록 프레임 워크는 아이폰 OS 9에서 사용되지 않습니다 주어진
func populate(from addressBook: ABAddressBook) {
let allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as [ABRecord]
for person in allPeople {
let name = ABRecordCopyCompositeName(person).takeRetainedValue()
print(name)
}
}
또는, 당신은 연락처 프레임 워크를 사용할 수 있습니다
관련이 없지만 Swift 3에서 프로그래밍하는 경우 이전 ABAddressBook보다 훨씬 쉬운 연락처 프레임 워크를 사용하는 것이 좋습니다. – Rob