Questo errore si verifica se la classe Swift dichiara alcune proprietà di AdressBook e questa classe fa parte del progetto misto Swift/ObjC. Xcode genera quindi un'intestazione di bridging Swift, dove questa proprietà diventa (non anatomica, forte), che è applicabile solo agli oggetti, non alle strutture.
Ho riscontrato un problema simile quando avevo bisogno di passare ABRecordRef dalla classe Objective-C alla classe Swift: Xcode non mi piaceva la mia proprietà ABRecordRef in Swift. Così ho finito per fare che la proprietà privata, in modo che non viene esportato l'intestazione di ponte, e l'aggiunta di nuovo metodo in classe Swift per ricevere ABRecordRef:
class: PersonDetails {
private var selectedPerson: ABRecorfRef?
func setPerson(person: ABRecordRef) {
selectedPerson = person
}
}
e quindi è possibile chiamare
[personDetails setPerson: person];
dalla classe Objective-C.
non si dovrebbe memorizzare un ABAddressBookRef invece? ABAddressBook è una struttura. O liberati di! assegnandolo in init o usa un? se potrebbe non essere impostato. –
A volte può essere nullo. L'ho cambiato in? e ancora ottengo lo stesso errore. E cambiarlo in ABAddressBookRef non aiuta neanche. – RyJ
Questo potrebbe essere il modo sottile di Apple per costringermi a passare a CNContactStore. – RyJ