BOOL tidak kompatibel dengan Bool di Swift 4.1

Saat mengganti subkelas Swift dari kelas Objective-C, saya mendapat pesan yang mengatakan:

Tipe properti 'BOOL' (alias 'bool') tidak kompatibel dengan tipe 'Boolean' (alias 'unsigned char') yang diwarisi dari 'ChildClass'

Saya mencoba menggunakan tipe Boolean lainnya tetapi tidak berhasil.

Adakah yang tahu cara mengganti Objc BOOL dengan benar di Swift

Kode Swift (subkelas):

override var myVar: Bool {
    get {
        return something ? true : myVar
    }
    set {
        myVar = newValue
    }
}

Pernyataan Induk Objc:

@property(atomic) Boolean isLoading;

Judul penghubung cepat tempat peringatan muncul:

SWIFT_CLASS("_TtC6Module30ChildClass")
@interface ChildClass : ParentClass
@property (nonatomic) BOOL myVar; //<----- Here 
@end

person Antzi    schedule 30.03.2018    source sumber
comment
sebagai? Bool - tidak berhasil juga?   -  person Sergey Hleb    schedule 30.03.2018
comment
@SergeyHleb Maaf saya tidak begitu jelas. Saya menambahkan kode untuk memperjelasnya. Masalahnya ada pada deklarasi header penghubung   -  person Antzi    schedule 30.03.2018
comment
apakah Anda benar-benar menggunakan/mengganti variabel isLoading?   -  person Sulthan    schedule 30.03.2018
comment
mungkin ini dapat membantu Anda?   -  person Sergey Hleb    schedule 30.03.2018


Jawaban (1)


di ObjC BOOL dan bool tidak sama (BOOL adalah karakter yang ditandatangani, sedangkan bool - alias C bool- adalah karakter yang tidak ditandatangani). Boolean juga diketik untuk unsigned char, begitu juga dengan C bool. Bisakah Anda mengubah properti objC Anda menjadi BOOL? jika tidak, maka gunakan tipe swift 'CBool'.

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html

person Florian Burel    schedule 30.03.2018
comment
Jika saya mengubah tipe Swift maka ia mengeluh tentang ketidakcocokan dengan bool. Memang benar, Menggunakan BOOL pada induk Objc berhasil. Saya sudah terbiasa hanya menggunakan BOOL di objc. Saya bahkan tidak menyadari bahwa induknya memiliki tipe yang berbeda - person Antzi; 30.03.2018