Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Model yapıma attığım verileri başka bir sınıfta kullanabilmek.

0 oy
20 kez görüntülendi
25, Aralık, 2017 ios development kategorisinde Mehmet tarafından soruldu

Merhaba;
Web servis'ten gelen verileri struct tipindeki modelime atıyorum ve verilerimin hepsini bu model struct yapım alıyor. Verileri struct yapıma attığım sınıfta verileri tekrar struct üzerinden alarak kullanabiliyorum. Fakat başka bir Cocoa Touch sınıfımda ben bu struct yapım içinde bulunan veriyi alamıyorum .Örneğin login kısmında username alanı struct'a atıyorum homepage kısmında bu struct yapıma ulaşıp username değişkenini alamıyorum.
Yardımıcı olabilir misiniz?

1 cevap

0 oy
25, Aralık, 2017 yasin tarafından cevaplandı

struct veya başka datalarının farklı classlardan erişilebilir olması için bir çok farklı yol izlenebilir.
Mesela bu iş için singleton bir class oluşturulabilir.

import UIKit

struct MyStruct {
    var loginName:String
    var password:String
    var displayName:String
}

class SharedVariables {

    static let sharedInstance = SharedVariables()

    var myStruct:MyStruct!

}

bir class'da şöyle set etilirken,

class ViewController_A: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        SharedVariables.sharedInstance.myStruct = MyStruct(loginName: "john", password: "123456", displayName: "John Doe")

    }
}

diğer bie class'da verilere şöyle erişilebilir.

class ViewController_B: UIViewController {

        override func viewDidLoad() {
            super.viewDidLoad()

            if let receivedMyStruct = SharedVariables.sharedInstance.myStruct {
                 print("loginName:\(receivedMyStruct.loginName)")
                 print("password:\(receivedMyStruct.password)")
                 print("displayName:\(receivedMyStruct.displayName)")
            }

        }
    }
25, Aralık, 2017 Mehmet tarafından yorumlandı

Struct yapım codable türündedir. Su anda bir obje gelirken başka yerlerde iç içe object'ler gelebiliyor. Farklı modellerim için.
SharedVariables.sharedIsntance.userM = try JSONDecoder().decode(UserModel.self, from: response.data!)
bu şekilde set edebilirmiyim daha sonra dediğiniz şekilde verileri alayım?.
if let receivedMyStruct = SharedVariables.sharedIsntance.userM {
print("Yeni datamiz (receivedMyStruct.data.user_name) ")
}
Şu anda bu şekilde maalesef alamıyorum hala ?

25, Aralık, 2017 yasin tarafından yorumlandı

Codable olması sorun yaratmaz. Aynı şekilde çalışacaktır. Tek dikkat edilmesi gereken husus. Null gelebilecek veriler için struct'da ki veri tiplerini optional olarak tanımlamaktır.

...