2016-07-21 20 views
0

konvertiert man diese Funktion von Swift außer Kraft zu setzen 2,3 bis Swift 3Wie Unmanaged <CFTypeRef> zu Swift 3

let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty) 

let phones: ABMultiValue = Unmanaged.fromOpaque(unmanagedPhones.toOpaque()).takeUnretainedValue() as NSObject as ABMultiValue 

Compiler sagt: 'Unmanaged<CFTypeRef>?' has no member 'toOpaque'

Bitte helfen Sie mir

Antwort

0

Adressbuch Rahmen ist veraltet wie von iOS9, und jederzeit Apple würde sagen: "AddressBook ist tatsächlich von iOS 10.x entfernt". Sie besser machen Sie sich bereit für Kontakte Framework bald.

Sie verwenden so redundanten Code, dass einige Teile nicht einmal in Swift2 benötigt werden.

Um T Objekt von Unmanaged<T>? Objekt abzurufen, müssen Sie nur sofort takeRetainedValue() oder takeUnretainedValue() aufrufen.

let phones: ABMultiValue? = unmanagedPhones?.takeRetainedValue() 
  • Sie sollten takeRetainedValue() für das Ergebnis der Copy -ruled Funktionen nutzen.
  • ABMultiValue ist ein Typalias von CFTypeRef in Swift3, also müssen Sie das Ergebnis nicht umwandeln.
  • Achten Sie auf Null-sichere Codierung, da Unmanaged<T>? möglicherweise Null ist.