구조체의 인스턴스에 전역 적으로 액세스하려면 어떻게해야합니까?

Letsgetswifty

나는 코딩이 처음이므로 이것이 어리석은 질문이라면 용서하십시오.

내 앱에는 가입 페이지와 홈 화면이 있습니다. 가입 페이지에서 사용자는 자신의 이름과 이메일 ID를 입력하여 가입합니다. 그가 그렇게 할 때 사용자 개체를 정의하는 데 사용하는 다음 구조체가 있습니다.

public struct User {
    let email: String
    let name: String
}

let user = User(email: "[email protected]", name: "Paul")

이제이 사용자 개체는 signUp보기에서 정의되지만 해당 속성을 전역 적으로 참조 할 수 있기를 원합니다. 즉, 내 홈페이지에 다음과 같은 메시지를 포함 할 수 있기를 원합니다.

let welcomeMessage = "Welcome, \(user.name)"

내가 말하는 것이 가능합니까?

아니면 구조체 이외의 다른 것을 사용하여 내 User 구조체의 유일한 저장된 인스턴스에 전역 적으로 액세스해야합니까?

Kamar Shad

내가 당신의 질문을 이해할 수 있다면. 가입이 완료되면 user홈 화면 (또는 다른 여러 장소)에서 해당 정보에 액세스하려고합니다 . 여러 가지 방법으로 그것을 달성 할 수 있습니다. 아래는 그 중 두 가지입니다.

다만,이 응답을 더 설명하게 고려해야 가입 화면으로 표현 SignUpViewController하고 화면으로 표시되고HomeViewController

값을 전달함으로써 user

가입이 완료되면 통과 할 수 있습니다. 가입이 완료되면 확신합니다. 당신은 초기화해야 HomeViewController가입 화면 어딘가에 pushing또는 presentingHomeViewController.

속성을 (예를 들어 보자 정의 user유형) User에서 HomeViewController당신이를 이니셜 때 HomeViewController가입 화면에서, 당신은 당신이 밀어 전에 통과 또는를 제시해야을 HomeViewController.

예제 코드

// Your user struct

struct User {
    let email: String
    let name: String
}

class SignUpViewController: UIViewController {

    //This is just to show you, I am sure you must be initializing the user appropriately.

    let user = User(email: "[email protected]", name: "Paul")

    //Assuming you have a function which is called as soon signup is completed

    func didSignUpCompleted() {
        // initialise the HomeViewController, here I am assuming you have storyboard corresponding to HomeViewController
        let storyboard = UIStoryboard(name: "youstoryboarname", bundle: nil)
        let homeViewController =  storyboard.instantiateViewController(withIdentifier: "homeViewControllerIdentifier") as! HomeViewController
        // This is the point where you have to pass that user property to HomeViewController
        homeViewController.user  = user
        // If the viewcontroller is embeded in UINavigationController
        self.navigationController?.pushViewController(homeViewController, animated: true)
    }
}


class HomeViewController: UIViewController {
    // this will be set from SignUp screen
    var user: User? 

   func viewDidLoad() {
       super.viewDidLoad()
       guard let signedUpUser = user else { return }
       let welcomeMessgae = "Welcome, \(signedUpUser.name)"
   }
}

싱글 톤 디자인 패턴

user여러 위치 에서이 속성 이 필요할 수있는 사용 사례 가있는 경우이 user정보 를 보유 할 싱글 톤 클래스를 만들 수 있습니다 . 정의 user가 단일 클래스의 속성을 때 당신을 설정 pushing또는 presenting HomeViewController에서 SignUpViewController.

속성 AppSession을 보유하는 싱글 톤 클래스 라고 가정 해 봅시다.user

class AppSession {

    static let current = AppSession()
    // user property. which will be set from sign up screen
    var user: User?

    private init() { }
}

가입이 완료되면 아래 함수가 호출된다고 가정합니다 (에서 정의 됨 SignUpViewController).

func didSignUpCompleted() {
     // set the `user` 
     AppSession.current.user = User(email: "[email protected]", name: "Paul")
}

나중에 이와 같은 곳에서 액세스 할 수 있습니다.

class HomeViewController: UIViewController {

   func viewDidLoad() {
       super.viewDidLoad()
       guard let signedUpUser = AppSession.current.user else { return }
       let welcomeMessgae = "Welcome, \(signedUpUser.name)"
   }
}

사용 사례에 따라 언급 된 접근 방식 중 하나를 구현할 수 있도록 약간의 이해를 얻을 수 있기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C API 콜백에 액세스 할 수 있도록 trait 객체를 전역 적으로 저장하려면 어떻게해야합니까?

분류에서Dev

R 함수 내의 데이터 프레임을 전역 적으로 액세스 할 수있게하려면 어떻게해야합니까?

분류에서Dev

전체 JSON을 완료하기 위해 JSON의 $ ref에 재귀 적으로 액세스하려면 어떻게해야합니까?

분류에서Dev

객체 변수의 필드에 액세스하여 자식 구성 요소에 소품으로 전달하려면 어떻게해야합니까?

분류에서Dev

단위 테스트시 Spock을 사용하여 속성 파일을 통해 액세스되는 전역 적으로 정의 된 속성에 액세스하려면 어떻게해야합니까?

분류에서Dev

단위 테스트시 Spock을 사용하여 속성 파일을 통해 액세스되는 전역 적으로 정의 된 속성에 액세스하려면 어떻게해야합니까?

분류에서Dev

인덱스로 pytorch 모듈의 레이어에 액세스하려면 어떻게해야합니까?

분류에서Dev

사용자의 테마에 따라 Vuetify에서 스크롤바를 전역 적으로 스타일링하려면 어떻게해야합니까?

분류에서Dev

효과적인 Rails의 텍스트에서 역사를 구축하려면 어떻게해야합니까?

분류에서Dev

개체의 인스턴스에서 공용 변수에 액세스하려면 어떻게해야합니까?

분류에서Dev

프로젝트 전체에서 액세스 가능한 클래스를 작성하려면 어떻게해야합니까?

분류에서Dev

포인터를 사용하여 잘못된 정렬로 개체에 합법적으로 액세스하려면 어떻게해야합니까?

분류에서Dev

전달 된 객체 내부의 데이터에 액세스하려면 어떻게해야합니까?

분류에서Dev

정적 FragmentPagerAdapter 내에서 지역화 된 문자열에 액세스하려면 어떻게해야합니까?

분류에서Dev

목록을 기반으로 DataFrame의 특정 열에 액세스하려면 어떻게해야합니까?

분류에서Dev

인스턴스에서 호출 된 "bind"메서드에 전달 된 미리 정의 된 함수 내에서 개체 인스턴스의 컨텍스트에 액세스하려면 어떻게해야합니까?

분류에서Dev

HttpContext에서 또는보다 구체적으로 사용자 지정 권한 부여 특성에서 역할 개체에 액세스하려면 어떻게해야합니까?

분류에서Dev

구조체 포인터의 멤버에 액세스하려면 어떻게해야합니까?

분류에서Dev

Electron 앱에서 mainWindow의 여러 인스턴스에 액세스하려면 어떻게해야합니까?

분류에서Dev

nuxt로 구성 요소의 HEAD 데이터에 액세스하려면 어떻게해야합니까?

분류에서Dev

BrowserRouter를 사용하여 React에서 이전 경로에 액세스하려면 어떻게해야합니까?

분류에서Dev

RSpec을 사용하여 전역 적으로 메서드를 스텁하려면 어떻게해야합니까?

분류에서Dev

Foo 유형의 모든 필드를 SubclassOfFoo의 인스턴스로 역 직렬화하도록 Jackson ObjectMapper를 구성하려면 어떻게해야합니까?

분류에서Dev

전체 파일을 tcl 스크립트에 인수로 전달하려면 어떻게해야합니까?

분류에서Dev

thymeleaf에서 HTML 파일의 선택적 값에 액세스하려면 어떻게해야합니까?

분류에서Dev

Excel 셀 값을 액세스 쿼리의 기준으로 설정하려면 어떻게해야합니까?

분류에서Dev

작업자의 내 활동에서 객체에 액세스하려면 어떻게해야합니까? (주기적으로 알림 변경)

분류에서Dev

django를 사용하여 세션의 값에 동적으로 액세스하려면 어떻게해야합니까?

분류에서Dev

DOM 요소로 기존지도 객체에 액세스하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    C API 콜백에 액세스 할 수 있도록 trait 객체를 전역 적으로 저장하려면 어떻게해야합니까?

  2. 2

    R 함수 내의 데이터 프레임을 전역 적으로 액세스 할 수있게하려면 어떻게해야합니까?

  3. 3

    전체 JSON을 완료하기 위해 JSON의 $ ref에 재귀 적으로 액세스하려면 어떻게해야합니까?

  4. 4

    객체 변수의 필드에 액세스하여 자식 구성 요소에 소품으로 전달하려면 어떻게해야합니까?

  5. 5

    단위 테스트시 Spock을 사용하여 속성 파일을 통해 액세스되는 전역 적으로 정의 된 속성에 액세스하려면 어떻게해야합니까?

  6. 6

    단위 테스트시 Spock을 사용하여 속성 파일을 통해 액세스되는 전역 적으로 정의 된 속성에 액세스하려면 어떻게해야합니까?

  7. 7

    인덱스로 pytorch 모듈의 레이어에 액세스하려면 어떻게해야합니까?

  8. 8

    사용자의 테마에 따라 Vuetify에서 스크롤바를 전역 적으로 스타일링하려면 어떻게해야합니까?

  9. 9

    효과적인 Rails의 텍스트에서 역사를 구축하려면 어떻게해야합니까?

  10. 10

    개체의 인스턴스에서 공용 변수에 액세스하려면 어떻게해야합니까?

  11. 11

    프로젝트 전체에서 액세스 가능한 클래스를 작성하려면 어떻게해야합니까?

  12. 12

    포인터를 사용하여 잘못된 정렬로 개체에 합법적으로 액세스하려면 어떻게해야합니까?

  13. 13

    전달 된 객체 내부의 데이터에 액세스하려면 어떻게해야합니까?

  14. 14

    정적 FragmentPagerAdapter 내에서 지역화 된 문자열에 액세스하려면 어떻게해야합니까?

  15. 15

    목록을 기반으로 DataFrame의 특정 열에 액세스하려면 어떻게해야합니까?

  16. 16

    인스턴스에서 호출 된 "bind"메서드에 전달 된 미리 정의 된 함수 내에서 개체 인스턴스의 컨텍스트에 액세스하려면 어떻게해야합니까?

  17. 17

    HttpContext에서 또는보다 구체적으로 사용자 지정 권한 부여 특성에서 역할 개체에 액세스하려면 어떻게해야합니까?

  18. 18

    구조체 포인터의 멤버에 액세스하려면 어떻게해야합니까?

  19. 19

    Electron 앱에서 mainWindow의 여러 인스턴스에 액세스하려면 어떻게해야합니까?

  20. 20

    nuxt로 구성 요소의 HEAD 데이터에 액세스하려면 어떻게해야합니까?

  21. 21

    BrowserRouter를 사용하여 React에서 이전 경로에 액세스하려면 어떻게해야합니까?

  22. 22

    RSpec을 사용하여 전역 적으로 메서드를 스텁하려면 어떻게해야합니까?

  23. 23

    Foo 유형의 모든 필드를 SubclassOfFoo의 인스턴스로 역 직렬화하도록 Jackson ObjectMapper를 구성하려면 어떻게해야합니까?

  24. 24

    전체 파일을 tcl 스크립트에 인수로 전달하려면 어떻게해야합니까?

  25. 25

    thymeleaf에서 HTML 파일의 선택적 값에 액세스하려면 어떻게해야합니까?

  26. 26

    Excel 셀 값을 액세스 쿼리의 기준으로 설정하려면 어떻게해야합니까?

  27. 27

    작업자의 내 활동에서 객체에 액세스하려면 어떻게해야합니까? (주기적으로 알림 변경)

  28. 28

    django를 사용하여 세션의 값에 동적으로 액세스하려면 어떻게해야합니까?

  29. 29

    DOM 요소로 기존지도 객체에 액세스하려면 어떻게해야합니까?

뜨겁다태그

보관