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

  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007
  • RocketJump

    RocketJump

    22 ŞUBAT 2006