SORU
5 HAZİRAN 2014, PERŞEMBE


Swift sınıf içgözlem & jenerik

Dinamik class örnek tabanlı bir tür jenerik, ancak sınıf içgözlem ile zorlukla karşılaşmış olduğum kullanarak oluşturmak için çalışıyorum.

İşte sorular:

  • N-C self.class Hızlı-bir eşdeğer var mı?
  • Bir şekilde bir sınıf NSClassFromString AnyClass sonuca oluşturmak için var mı?
  • Bir şekilde AnyClass veya başka bir şekilde elde etmek için tür bilgileri 9 ** genel bir parametre tam anlamıyla var mı? (C benzer#'s typeof(T) sözdizimi)

CEVAP
5 HAZİRAN 2014, PERŞEMBE


Birincisi, [NSString class] Hızlı eşdeğer .self (çok ince olmalarına rağmen Metatype docs, bkz.

Aslında NSString.class çalışmıyor bile! NSString.self kullanmak zorunda.

let s = NSString.self
var str = s()
str = "asdf"

Benzer şekilde, hızlı bir sınıf ile çalıştım...

class MyClass {

}

let MyClassRef = MyClass.self

// ERROR :(
let my_obj = MyClassRef()

Hmm... diyor ki: hata

Bahçesi yürütme başarısız oldu: hata: :16:1: hata: sınıf türünde bir nesne 'X' metatype bir değer '@gerekli' başlatıcı . gerektirir ile inşa

 Y().me()
 ^
 <REPL>:3:7: note: selected implicit initializer with type '()'
 class X {
       ^

Beni bir süre bu demektir... sınıfı @required init() sahip olmak istediği meğerse ne olduğunu anlamaya aldı

class X {
    func me() {
        println("asdf")
    }

    @required init () {

    }
}

let Y = X.self

// prints "asdf"
Y().me()

Doktorlar bazı* *20, ama MyClass.Type benim oyun bir hata veriyor buna bakın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009