現在アプリ作成中で、Userモデルをシングルトンパターンを使って複数の画面にユーザー情報を共有したいと思っています。
モデルの持つフィールドで非オプショナルで扱いたいフィールドなどがある場合シングルトンはどのように定義すればいいのでしょうか?
class User { static let shared = User() //Error let id: Int let email: String let accessToken: String init(json: Any) { guard let dictionary = json as? [String : Any] else { throw JSONDecodeError.invalidFormat(json: json) } guard let id = data["id"] as? Int else { throw JSONDecodeError.missingValue(key: "id") } guard let email = data["email"] as? String else { throw JSONDecodeError.missingValue(key: "email") } guard let email = data["accessToken"] as? String else { throw JSONDecodeError.missingValue(key: "accessToken") } self.id = id self.email = email self.accessToken = accessToken } }
class ViewController: UIViewController { let user = User.shared func fetchUser() { API.shared.request(_ params: ["id" : user.id]) { result in switch result { case .success: case .failure: } } } }
class ViewController2: UIViewController { let user = User.shared func fetchUser() { API.shared.request(_ params: ["accessToken" : user.accessToken]) { result in switch result { case .success: case .failure: } } } }
回答2件
あなたの回答
tips
プレビュー