xcode7.x Swift 에 대해서 질문이 있습니다.(Struct와 Array를 이용중 오류)

조회수 1921회

안녕하세요 swift를 이용해 어플을 만들고있는 학생입니다. 바로 질문 드리겠습니다.

현재 상황은 한 테이블 뷰에서 구조체 선언후 일부 초기값을 준 후 초기값을 준 구조체를 다시한번 모아서 배열로 만들려고 하는 상황입니다. play ground에서는 문제가 없는데 project에 쓰기만 하면 밑에 나온 사진처럼 오류가 발생합니다. 인터넷에서 찾아보니 override func 내부에 작성을 하면 괜찮은거 같기는 한데... 저는 이 배열을 전역변수로써 사용하고 싶습니다. 방법이 없을까요??

1 답변

  • 좋아요

    3

    싫어요
    채택 취소하기

    viewDidLoad() 메소드 안에서 값을 초기화 해주면 될거 같습니다.

    struct Zone {
            var name : String
            var controller : [controllerType]
    
            enum controllerType {
                case LG_TV
                var typeTitle : String {
                    get {
                        let titleString : String
                        switch self {
                        case .LG_TV:
                            titleString = "LG TV"
    
                        }
                        return titleString
                    }
                }
            }
        }
    
        var Room1 = Zone(name : "ROOM1", controller : [.LG_TV, .LG_TV, .LG_TV])
        var Room2 = Zone(name : "ROOM2", controller : [])
        var Room3 = Zone(name : "ROOM3", controller : [])
    
        var Zones : [Zone] = [] 
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            Zones = [Room1, Room2, Room3]
    
            print(Zones)  
            //또는 
            Zones.append(Room1)
            Zones.append(Room2)
            Zones.append(Room3)
    
            print(Zones)
        }
    

    제가 질문을 잘 못 이해하거나 틀린점이 있다면 편집요청 또는 댓글을 남겨주세요 :)

    ++++++++++++추가++++++++++++ 이미지

    • 너무너무 잘 됩니다!! viewDidLoad() 라는 함수 자체가 어플이 실행이 된다면 초기값을 주는 영역인가요? 또한 모든 뷰에서 사용 가능한 함수인가요?(기본적으로 제공이 안되는 뷰나 컨트롤러들 에서도요!) 한경민 2016.7.19 09:29
    • ios 라이프 사이클에서 뷰가 로드 되는 부분에서 재일 처음 호출되는 메소드 입니다. 단일 UIView는 조금 틀리지만 컨트롤러에서 대부분 뷰가 로드될때 호출 됩니다. 라이프 사이클 사진 첨부 해드릴게요! myoung 2016.7.19 10:28
    • 감사합니다!!!!!!! 한경민 2016.7.19 10:36

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)