8

私はこの変数をswiftファイルに持っています:

var adbk: ABAddressBook!

Xcode 7.1まで、これは常に問題ありませんでした。現在、「保持または強力な属性を持つプロパティはオブジェクト型でなければなりません」と不平を言っています。エラーは-Swift.hファイルにあります。これを引き起こす変更と、それを修正する方法について何か考えはありますか?

4

2 に答える 2

3

このエラーは、Swift クラスがいくつかの AddressBook プロパティを宣言し、このクラスが混合 Swift / ObjC プロジェクトの一部である場合に発生します。次に、Xcode は Swift ブリッジング ヘッダーを生成します。ここで、このプロパティは (非アトミック、強力) になり、構造体ではなくオブジェクトにのみ適用されます。

ABRecordRef を Objective-C クラスから Swift クラスに渡す必要があるときに、同様の問題が発生しました。Xcode は、Swift の ABRecordRef プロパティを好みませんでした。そのため、ブリッジ ヘッダーにエクスポートされないように、そのプロパティを非公開にし、Swift クラスに新しいメソッドを追加して ABRecordRef を受け取ることになりました。

    class: PersonDetails {

       private var selectedPerson: ABRecorfRef?

       func setPerson(person: ABRecordRef) {
          selectedPerson = person
       }
    }

そして、あなたは呼び出すことができます

[personDetails setPerson: person];

Objective-C クラスから。

于 2015-11-20T21:27:05.117 に答える
0

ABAddressBook は非推奨です

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

CNContactStoreを使用する必要があると思います

于 2015-12-15T05:14:16.993 に答える