2013-10-15 5 views
0

나는 모든 운동을위한 모든 데이터를 가진 Workout App과 모델을 가지고 있습니다. 이제 그 TableView의 모든 하위 VC에서 모델에 액세스하는 데 싱글 톤을 사용하고 있습니다. 문제가 생겨서 싱글 톤을 제거하고 싶습니다.앱을 통해 모델을 최신 상태로 유지하는 방법

이제 모델을 앱 전체에서 업데이트하고 앱 내의 모든 위치에서 액세스하려면 어떻게해야합니까? 그것은 싱글 톤으로 쉽습니다. Child VC에서 Parent로 다시 모델을 전달해야하므로, 다음 연습을 선택하면 Parent가 다음 Child VC로 전달할 수 있습니다.

+2

"문제가 있음"으로 확장 할 수 있습니까? 어떤 종류의 문제입니까? – danielbeard

+0

상태 보존 및 복원이 싱글 톤으로 올바르게 작동하도록 할 수 없습니다. –

답변

0

나는 상태 보존을 사용하지 않았다. 그래서 어떤 문제가 싱글 톤이되는 문제인지 모르겠다. (내가 도움을 줄 수있는 그 문제에 대해 자세히 설명해 준다.) 그러나 나는 발견했다. 데이터 모델이 단순한 앱에서 사용자가 지정한 것처럼 싱글 톤이 일반적으로 더 쉽습니다. 즉, 단지 옵션이 아니면 pass the model object between controllers을 원할 것입니다. 기본적으로 각 컨트롤러에 속성을 넣은 다음 대상에 대상 컨트롤러에 해당 개체를 전달합니다.

탐색 스택에서 컨트롤러를 가져올 때 데이터가 변경된 경우에도보기를 업데이트 할 수 있습니다. 스토리 보드를 사용하고 장면 수가 적 으면 (스토리 보드 내의 개별 '스크린'), 부모 컨트롤러의 메소드를 호출하여 자식이 펑크났다는 것을 알리는 Unwind segue을 연결하는 것이 매우 쉽습니다. 스택 - 자식 개체를 부모 컨트롤러에 저장하고 뷰를 새로 고치는 곳입니다.

iOS 앱에 several ways to persist data이 있습니다. 내가 가장 좋아하는 책은 Core Data이며 직렬화입니다. 모델이 실제로 단순합니다 (하나 또는 두 개의 객체 인스턴스와 각 객체의 속성 만). 직렬화는 매우 쉽습니다. NSCoding을 사용하여 객체를 인코딩/디코딩하고 save that data to a file을 응용 프로그램 데이터 디렉토리에 사용합니다. 모델이 더 복잡하다면 (예 : 오브젝트 또는 많은 오브젝트 인스턴스 사이의 관계가있는 경우) 코어 데이터는 좋은 방법입니다. 그것은 메모리에 객체 '그래프'를 관리하고 당신을 위해 디스크에 그 객체를 유지합니다. 앞으로도 모델을 발전시켜야 할 경우 영구 저장소 업그레이드를 처리 할 수도 있습니다. 매우 강력하지만 약간의 학습 곡선이 있습니다.

+0

감사합니다. 또한 상태 보존 및 복원을 처음 사용하기 때문에 내게 혼란 스럽습니다. 객체를 대상 VC로 전달하는 방법을 알고 있지만 부모에게 다시 전달하는 방법을 알고 있으므로 다음 자식 VC로 이동할 때 새 데이터가 포함되어 있습니까? –

+0

Btw 시작과 실행 사이의 앱 상태와 데이터를 기억하기 위해 뭔가 다른 것을 사용 했습니까? –

+0

스토리 보드에서 unwind segues로 작업하는 방법을 정교하게 답했습니다. 스토리 보드를 사용하지 않는 경우 질문을 편집하여 네비게이션을 어떻게 처리하는지 자세히 설명하고 그에 맞는 대답을 줄 수 있습니다. – RyanR

관련 문제