2017-12-29 85 views
1

저는 초보자입니다. 그래서 제 프로젝트에서 저는 거의 모든 컨트롤러에서 사용했던 여러 객체/모델을 사용했습니다. 내 질문은, 컨트롤러 (컨트롤러를 통해)가 업데이트 될 때 자동으로 개체/모델을 업데이트하는 방법입니다.여러 컨트롤러에서 개체/모델 업데이트하기

올바른 수행 방법은 무엇이며 어떻게 진행할 수 있습니까?

+1

컨트롤러의 개체에 옵저버를 추가하고 메서드를 구현하여 viewController UI를 업데이트해야합니다. –

+0

동일한 모델이 모든 곳에서 사용되는 경우 왜 해당 모델의 singelton 개체가 없는지 확인하십시오. 이렇게하면 어디서 수정하든 변경 사항은 모든 컨트롤러에서 얻을 수 있습니다. 추적 할 수없는 버그가 발생할 수 있으므로 요구 사항을 확실히 알고있는 경우에만 수행하십시오. –

+0

모델을 작성하는 방법, 모델 개체를 사용하는 방법 및 모델을 업데이트하는 방법과 같은 일부 코드를 업데이트 할 수 있습니까? –

답변

0

개념은 Pass By Value & Pass By Reference입니다.

귀하의 질문에 가장 잘 맞는 해결책은 Pass By Reference 유형을 사용하는 것입니다.

우리가 Swift programming language에 대해 이야기하는 경우.

class은 참조 유형 & struct입니다. 값 유형입니다.

따라서 모델 클래스는 class 유형으로 작성되어야합니다.

코드 예. 당신은 당신이 아이디어를 시도 할 수 있습니다 값이 “Modified”

될 것입니다 다시 FirstViewController에 가서 배열의 first element을 선택하면

class Dog { 
    var breed : String = "" 
    var sub_breed = [String]() 
    init(_breed:String,_sub_breed:[String]) { 
     self.breed = _breed 
     self.sub_breed = _sub_breed 
    } 
} 

FirstViewController: 

var dogs : [Dog] = [Dog(_breed: “Original”, _sub_breed: [“subBreedType1”, “subBreedType2”])] 

SecondViewController: // You are passing reference of dogs to SecondVC 

var dogs : [Dog] = [] 

dogs[0].breed = “Modified” 

이제, SecondViewController에서 breed name의 값을 변경했습니다.

기타 해결책 : 의 Singleton object

감사합니다.