Swift

2016-03-20 40 views
0

modelinde model başlatılamıyor Ana View Controller'da kullanıcı tarafından oluşturulmuş bir veri modeline sahip olmak ve daha sonra readyForSegue aracılığıyla diğer görüntü denetleyicilerine iletilmek istiyorum.Swift

Ancak, View Controller'ımda modeli kullanamıyorum ve isteğe bağlı isteğe bağlı değerler için hatalar alıyorum.

Ben:

Class Collection: NSObject { 
    var id: String! 
    var image: String! 
    var apples: Int? 
    var oranges: Int? 
    var lemons: Int? 
} 

init(id: String, image: String, apples: Int, oranges: Int, lemons: Int) { 
    super.init() 
    self.id = id 
    self.photo = photo 
    self.apples = apples 
    self.oranges = oranges 
    self.lemons = lemons 
} 

View Controller:

var collection: Collection! 
... 
    // if user selects a number .. 
    self.collection.oranges = usersSelection 
    self.collection.apples = usersSelection 
    etc 

kimse yanlış lütfen ne yapıyorum söyleyebilir misiniz? Teşekkür ederiz!

+0

Eğer 'Collection' ait başlatıcı aradı mı? – Sweeper

+0

View Controller'da evet. numaralı telefonu çağırırsam toplama = Koleksiyon (id: "", fotoğraf: "", elmalar: 0, portakallar: 0, limonlar: 0) çalışır, ancak nokta notasyonu ile değiştirmek için özelliklere erişemiyorum. – Dazzle

+0

Neden bir "NSObject" alt sınıfı? Sadece bir yapı kullanabilirsin. – Abizern

cevap

0

böyle modeliniz sınıfı tanımlayın:

class Collection: NSObject { 
    var id: String! 
    var image: String! 
    var apples: Int? 
    var oranges: Int? 
    var lemons: Int? 

    init(id: String, image: String, apples: Int?, oranges: Int?, lemons: Int?) { 

     super.init() 
     self.id = id 
     self.image = image 

     if let _ = apples{ 
      self.apples = apples 
     } 
     if let _ = oranges{ 
      self.oranges = oranges 
     } 
     if let _ = lemons{ 
      self.lemons = lemons 
     } 

    } 

} 

O zaman bu gibi ViewController uygulamak:

class ViewController: UIViewController { 
    var collection: Collection! 

    override func viewDidLoad() { 
     collection = Collection(id: "user selection", image: "useselection", apples: nil, oranges: nil, lemons: nil) 
//  collection.image = 
//  colection.oranges = 
//  ........ 

    } 
} 
+0

Bunun için teşekkürler. Bunu denedim ve bir hata alıyorum "Nil argüman türü Int ile uyumlu değil" – Dazzle

+0

Ama cevabı yazmadan önce kodumu oyun alanında kontrol ettim. Hatalarınızı paylaşabilir misiniz? – iMuzahid

+0

Öneriniz için, benim hatam, "int" – Dazzle