SORU
21 EKİM 2014, Salı


En iyi uygulama swift failable başlatıcı uygulamak

Aşağıdaki kod ile basit bir model sınıfı tanımlamak için çalışıyorum ve bir (json)parametre olarak sözlük sürer failable başlatıcı. Başlatıcı kullanıcı adı orijinal json tanımlı değilse sıfır döndürür.

1. Neden kod derleme değil mi? Hata mesajı diyor ki:

"All stored properties of a class instance must be initialized before returning nil from an initializer" 

Bu hiç mantıklı değil. Neden nil dönmek için plan yaparken bu özellikleri başlatmak gerekir?

2. Benim yaklaşımım doğru ya da başka bir fikri veya ortak desen benim hedefe ulaşmak için var mı?

    class User: NSObject {

    let userName: String
    let isSuperUser: Bool = false
    let someDetails: [String]?

    init?(dictionary: NSDictionary) {


        if let value: String = dictionary["user_name"] as? String {
            userName = value
        }
        else {
           return nil
        }

        if let value: Bool = dictionary["super_user"] as? Bool {
            isSuperUser = value
        }

        someDetails = dictionary["some_details"] as? Array

        super.init()
    }
}

CEVAP
21 EKİM 2014, Salı


Bu hiç mantıklı değil. Neden bu özellikleri başlatmak gerekiyor Nil dönüş yapmayı planlıyorum?

Chris Lattner göre bu bir hata değildir. O diyor ki:

Bu swift 1.1 derleyici,uygulama bir sınırlama var belgelenen sürüm notları. Derleyici şu anda değiştiremiyor izin vermiyor her durumda kısmen başlatıldı sınıflar yok, gerekecek bir durum oluşması. Bu bir düşünün böcek gelecekteki sürümlerinde, bir özelliği olmayan sabit olması.

Source

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • paikimchung

    paikimchung

    12 Mayıs 2006