2015-10-23 24 views
7

Ben hızlı bir dosyada bu değişkeni var olmalıdır:Xcode 7.1: ile Mülkiyet korumak veya güçlü özellik nesne türü

hep iyi olmuştur
var adbk: ABAddressBook! 

, Xcode 7.1 kadar. Artık "Sahipliği koru veya güçlü özellik, nesne türünde olmalıdır" şeklinde şikayet ediyor. Hata, -Swift.h dosyasındadır. Neyin değiştiğine dair bir fikre, buna neden olacak ve nasıl düzeltilecek?

+1

bunun yerine bir ABAddressBookRef saklamak gerekmiyor kullanmak zorunda düşünüyorum

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

kullanımdan kaldırıldı? ABAddressBook bir yapıdır. Ya kurtulun! init atayarak veya a kullanarak? eğer ayarlanamazsa. –

+0

Zaman zaman sıfırlanabilir. Onu değiştirdim mi? ve hala aynı hatayı al. Ve bunu ABAddressBookRef'e değiştirmek de işe yaramıyor. – RyJ

+0

Bu, Apple'ın beni CNContactStore'a geçiş yapmaya zorlamanın ince bir yolu olabilir. – RyJ

cevap

3

Swift sınıfı, AdressBook özelliklerinin bir kısmını bildirirse ve bu sınıf karma Swift/ObjC projesinin bir parçasıysa, bu hata oluşur. Daha sonra Xcode, bu özellik (yalnızca atom olmayan, güçlü) hale gelen ve yalnızca nesneler için geçerli olan, yapıları olmayan Swift köprüleme başlığı oluşturur.

ABRecordRef nesnesini Objective-C sınıfından Swift sınıfına geçirmem gerektiğinde benzer bir sorunla karşılaştım: Xcode, Swift'deki ABRecordRef özelliğimi beğenmedi. Bu yüzden köprü başlığına ihraç edilmez, böylece bu özellik, özel yapım ve ABRecordRef almaya Swift sınıfında yeni bir yöntem ekleyerek sona erdi ettik:

class: PersonDetails { 

     private var selectedPerson: ABRecorfRef? 

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

Sonra da çağırabilir

[personDetails setPerson: person]; 
Objective-C sınıfından

.

0

ABAddressBook yüzden sen CNContactStore

İlgili konular