Dieser Fehler tritt auf, wenn die Swift-Klasse einige AdressBook-Eigenschaften deklariert und diese Klasse Teil des gemischten Swift/ObjC-Projekts ist. Xcode erzeugt dann einen Swift-Bridging-Header, wobei diese Eigenschaft (nichtatomisch, stark) wird, was nur für Objekte und nicht für Strukturen gilt.
Ich habe ähnliches Problem festgestellt, wenn ich ABRecordRef von Objective-C-Klasse an Swift-Klasse übergeben musste: Xcode mochte meine ABRecordRef-Eigenschaft in Swift nicht. Also habe ich am Ende zu machen, dass das Eigentum privat, so dass es nicht auf den Brückenkopf exportiert wird, und das Hinzufügen neuer Verfahren in Swift Klasse erhalten ABRecordRef:
class: PersonDetails {
private var selectedPerson: ABRecorfRef?
func setPerson(person: ABRecordRef) {
selectedPerson = person
}
}
Und dann können Sie rufen
[personDetails setPerson: person];
von Objective-C-Klasse.
Sollten Sie nicht speichern eine ABAddressBookRef stattdessen verwenden? ABAddressBook ist eine Struktur. Entweder loswerden! indem Sie es in init zuweisen oder ein? wenn es nicht festgelegt ist. –
Es kann manchmal Null sein. Ich habe es in ein? und immer noch den gleichen Fehler bekommen. Auch das Ändern auf ABAddressBookRef hilft nicht. – RyJ
Dies könnte Apples subtile Art sein, mich zum Übergang in den CNContactStore zu zwingen. – RyJ