我在 swift 文件中有这个变量:
var adbk: ABAddressBook!
这一直很好,直到 Xcode 7.1。现在它抱怨“具有保留或强属性的属性必须是对象类型。” 错误在-Swift.h
文件中。知道发生了什么变化会导致这种情况以及如何解决它吗?
如果 Swift 类声明了一些 AdressBook 属性并且该类是混合 Swift / ObjC 项目的一部分,则会发生此错误。然后 Xcode 生成 Swift 桥接头,该属性变为 (nonatomic, strong),仅适用于对象,不适用于结构。
当我需要将 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 类。
ABAddressBook 已弃用
@available(iOS, introduced=2.0, deprecated=9.0, message="use CNContactStore")
public typealias ABAddressBookRef = ABAddressBook
所以我认为你必须使用 CNContactStore