Xcode 7.1:带有retain或strong属性的属性必须是对象类型

我在一个swift文件中有这个变量:

var adbk: ABAddressBook!

这一直很好,直到Xcode 7.1。 现在它抱怨说:“保留或强属性的属性必须是对象类型。” 该错误在-Swift.h文件中。 任何想法是什么改变了会导致这种情况,以及如何解决它?


如果Swift类声明了一些AdressBook属性,并且该类是Swift / ObjC混合项目的一部分,则会发生此错误。 Xcode然后生成Swift桥接头,其中此属性变成(非原子,强),它仅适用于对象,不适用于结构。

当我需要将Objective-C类的ABRecordRef传递给Swift类时,我遇到过类似的问题:Xcode不喜欢Swift中的ABRecordRef属性。 所以我最终将这个属性设置为私有的,这样它就不会被导出到桥头,并且在Swift类中添加新的方法来接收ABRecordRef:

    class: PersonDetails {

       private var selectedPerson: ABRecorfRef?

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

然后你可以打电话

[personDetails setPerson: person];

来自Objective-C类。


ABAddressBook已弃用

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

所以我认为你必须使用CNContactStore

链接地址: http://www.djcxy.com/p/29931.html

上一篇: Xcode 7.1: Property with retain or strong attribute must be of object type

下一篇: Input with datalist grouping