我在swift文件中有这个变量:
restore items
一直很好,直到Xcode 7.1。现在它抱怨“具有retain或strong属性的属性必须是对象类型。”错误发生在var adbk: ABAddressBook!
文件中。知道改变了什么会引起这种情况以及如何解决它?
答案 0 :(得分:3)
如果Swift类声明了一些AdressBook属性并且此类是混合的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类。
答案 1 :(得分:0)
不推荐使用ABAddressBook
@available(iOS, introduced=2.0, deprecated=9.0, message="use CNContactStore")
public typealias ABAddressBookRef = ABAddressBook
所以我认为你必须使用CNContactStore