2015-10-23 4 views
7

Ich habe diese Variable in einer schnellen Datei von Objekttyp sein:Xcode 7.1: Immobilie mit behalten oder starkem Attribut muss

var adbk: ABAddressBook! 

die immer in Ordnung gewesen ist, bis Xcode 7.1. Jetzt beschwert es sich "Eigenschaft mit Retain oder Strong-Attribut muss vom Objekttyp sein." Der Fehler ist in der -Swift.h Datei. Irgendeine Idee, was sich geändert hat, würde dies verursachen und wie man es repariert?

+1

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. –

+0

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

+0

Dies könnte Apples subtile Art sein, mich zum Übergang in den CNContactStore zu zwingen. – RyJ

Antwort

3

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.

0

ABAddressBook ist

veraltet
@available(iOS, introduced=2.0, deprecated=9.0, message="use CNContactStore") 
public typealias ABAddressBookRef = ABAddressBook 

so denke ich, Sie CNContactStore

Verwandte Themen