SORU
4 AĞUSTOS 2014, PAZARTESİ


Swift: Sınıf'in gerekli üyeleri, üst uygulamıyor

6 beta 5 bugün böyle büyük mükafat için güncelledi ve Apple'ın sınıfların alt sınıflar benim neredeyse tüm hataları aldım fark ettim.

Hata durumları:

'X' üst uygulamıyor gerekli üyeleri . sınıf

Sonrası kolay olacak bu sınıf şu anda çok hafif olduğu için seçtiğim bir örnek.

class InfoBar: SKSpriteNode  { //Error message here

    let team: Team
    let healthBar: SKSpriteNode

    init(team: Team, size: CGSize) {
        self.team = team
        if self.team == Team.TeamGood {
            healthBar = SKSpriteNode(color: UIColor.greenColor(), size:size)
        }
        else {
            healthBar = SKSpriteNode(color: UIColor.redColor(), size:size)
        }
        super.init(texture:nil, color: UIColor.darkGrayColor(), size: size)

        self.addChild(healthBar)

    }

}

Benim sorum, neden bu hatayı alıyorum, bunu nasıl düzeltebilirim? Uygulanması değilim? Belirlenmiş bir başlatıcı arıyorum.

CEVAP
4 AĞUSTOS 2014, PAZARTESİ


Bir Apple Geliştirici Forumları çalışan:

"Derleyici bildirmek için bir yol ve inşa programı gerçekten uyumlu NSCoding olmak istemiyorum böyle bir şey yapmak:"

required init(coder: NSCoder) {
  fatalError("NSCoding not supported")
}

Eğer uyumlu NSCoding olmak istemediğini biliyorum, bu bir seçenek. Bir film şeridi yükleniyor olmayacağım biliyorum SpriteKit benim kod bir sürü ile bu yaklaşım kiraladım.


Oldukça iyi işler çıkarabilirsin başka bir seçenek gibi bir kolaylık ınıt yöntemi uygulamak için:

convenience required init(coder: NSCoder) {
    self.init(stringParam: "", intParam: 5)
}

self bir başlatıcı için aramayı unutmayın. Bu sadece ölümcül bir hata atmak kaçınırken, isteğe bağlı olmayan tüm özellikleri farklı olarak parametreler için kukla değerleri kullanmak için izin verir.


Tabii ki üçüncü seçenek süper arama yöntemi uygulamak ve isteğe bağlı olmayan özelliklerinizin tüm yapmaktır. Eğer nesne bir görünüm bir film şeridi yükleniyor, eğer bu yaklaşım almalı:

required init(coder aDecoder: NSCoder!) {
    foo = "some string"
    bar = 9001

    super.init(coder: aDecoder)
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesomesauce Network

    Awesomesauce

    4 EKİM 2012
  • katherine gomez

    katherine go

    1 Aralık 2011
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011