sentezlenmesi dekoder init önler Ben Diyar en nesne türü devralan aşağıdaki Swift 4 Codable
sınıfı:çözülebilir - miras
final class SearchResult: RealmSwift.Object, Codable {
@objc dynamic var name: String = ""
@objc dynamic var region: String = ""
enum CodingKeys: String, CodingKey {
case name = "name"
case region = "region"
}
}
burada beklenti I yok, böylece init(from decoder: Decoder)
yöntem sentezlenmiş olur olduğunu Kendimi uygulamak için, büyük bir kolaylık.
super.init isn't called on all paths before returning from initializer
derleyici hatası kurtulmak git için üç yolu vardır, ancak bunların hiçbiri iyi:
boş
init(from decoder: Decoder)
uygulamak Ancak bu uygulamaya değil aşağıdaki derleyici hata verir yöntemi, sadecesuper.init()
çağırır. Bu, sentezlenmeyi engelliyor gibi görünüyor, hiçbir şey aslında çözülmediği anlamına geliyor, çünkü bu sadece boş bir yöntem.Tüm
init(from decoder: Decoder)
yöntemini elle uygulayın. Bu çalışır, ancak şimdiCodable
kullanma zevkini çoktan gitti.Tüm bölge ile ilgili kodları kaldırın. Şimdi Codable beklendiği gibi çalışıyor, ama şimdi, artık Realm'yi kullanamıyorum. o
init(from decoder: Decoder)
adil değil elle, uygulanmakta olan aslında olduğunu algılamalıdır çünkü
Bu, benim için Swift böcek gibi görünüyor.
Bilmediğim herhangi bir öneri veya geçici çözüm var mı?
https://bugs.swift.org/browse/SR-5122 adresinde bu sorunu izleyen bir Hızlı hata var. Ayrıca, Apple'ın geçici çözümlerin neden olduğu acıyı bilmesi için bir Radar'ı göndermenizi ve bir düzeltmeye önem vermenizi öneririm. Yine de, bu sorun için geçici çözümler konusunda emin değilim. – bdash
Evet, bu bir hatadır. Sınıflardaki katlanılabilir uyumluluk şu anda birkaç yerde bozuk ve yakında düzeltmek istiyorum. (Bu, özelliğin önemli bir parçasıdır ve yayınlanmadan önce düzeltilmelidir.) –
Bunu duymak güzel. O zamana kadar elle uygulamaya devam edeceğimi düşünüyorum. – RamwiseMatt