Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
366 kez görüntülendi
ios development kategorisinde tarafından

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
tarafından

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)")
            }

        }
    }
tarafından

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 ?

tarafından

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.

...