2014-04-09 5 views
-2

앱을 만들었지 만 알려진 디자인 패턴 (MVC)을 따르도록 리팩토링하고 싶습니다. 누군가가내 앱에서 MVC를 사용할 수 있습니까?

그래서 지금은 이러한 클래스를 가지고있는 클래스 코드에 있어야 무엇인지 설명 할 수 :

이 애플리케이션은 다음과 같이 작동
ViewController 
-- properties 
name 
age 
-- methods 

DetailViewController 
-- properties 
detail array 
-- methods 

FavoritesViewController (tableview) 
-- properties 
favorites array 
-- methods 

AllNamesViewController (tableview) 
-- properties 
name 
age 
-- methods 

:

사용자가 앱 열립니다 - 그는이 물음표를 클릭 할 수 있습니다 json 형식으로 이름 및 기타 속성을 가져옵니다. DetailViewController를 열고 DetailViewController의 세부 배열에 이름과 나이를 푸시합니다.

즐겨 찾기 - 그는 시작 화면으로 돌아가서 FavoritesViewController에 대해 왼쪽으로 스 와이프하여 그가 저장 한 이름을 볼 수 있습니다 ... 클릭하면 DetailsViewController로 돌아가서 즐겨 찾기 배열을 세부 배열로 푸시합니다.

AllNames - 배열에서 모든 이름을 가진 모든 이름에 대해 오른쪽으로 스 와이프하여 DetailViewController로 이동 한 다음 배열 요소를 DetailViewController 배열로 푸시합니다.

어떤 종류의 객체가 데이터 모델이어야합니까? 그 데이터 모델은 어떻게 생겼을까요?

json 메서드의 일부는 항상 컨트롤러 또는 데이터 모델에 있어야합니까?

데이터 모델을 결정하는 방법은 무엇입니까? 많은 책을 읽고 지침서를 따라 갔지만 데이터 모델에 무엇이 있어야하는지 알 수 없습니다.

그래서 누군가가 내가 만든이 앱을 명확히 할 수 그래서 어쩌면 내가 "OOOHH"아이디어 :

+0

michaels가 내 질문을 완벽하게 이해했습니다. 코드를 리팩토링하고 있습니다. 나는 무엇이 모델이어야하고 무엇이 컨트롤러에 있어야하는지 알고 싶었습니다.내가 알지 못했던 것은 당신이 "Person"객체를 얻기 위해 처리하는 메소드에 대해서도 다른 클래스를 만들어야한다는 것이다. 대답에 대한 – MichaelAngelo

답변

1

MVC 패턴에 따라, 당신은 별도의 세 가지 구성 요소가 있는지 얻을 : 모델, 뷰, 컨트롤러.

iOS에서 viewController은 MVC 패턴에서 컨트롤러의 역할을합니다. 이는 사용자의 뷰와 데이터 간의 통신을 처리하기위한 것입니다.

은의 ViewController의 view 속성은 MVC 패턴보기의 역할을한다 -이 표시되는 UI입니다.

모델 부분을 구현하는 방법은 귀하에게 달려 있지만, 귀하의 질문에서 이해할 수있는 것으로부터 귀하의 정보를 보유하는 데이터 개체와 해당 데이터의 저장 (JSON)의 두 가지 책임이있는 것으로 보입니다.

저장해야하는 데이터에 대한 속성을 가진 데이터 객체 (Person 또는 무언가, 사용 사례가 확실하지 않음) 만있는 두 개의 클래스를 만들고,) 실제 방법. 두 번째는 저장 될 Person을 전달하는 일종의 저장 클래스이며, 다시 쿼리 할 수 ​​있습니다 (예 : getAll, getFavorites 등). 이 클래스는 JSON과의 변환을 처리하며 인터페이스는 Person 객체 만 처리합니다.

귀하의 컨트롤러는,이 스토리지 클래스를 조회 사람의 배열을 검색하고 (이 보이는 테이블에) 어떻게 든이를 표시한다.

+0

주셔서 감사합니다. 그래서 나는 webservice에 연결하고 Person에 넣은 정보를 다시 얻는 모든 메소드를 가진 클래스를 만들어야합니다. 다른 뷰 컨트롤러는 Person을 다시 얻으려면 이러한 메서드를 사용해야합니까? 해당 Person 객체를보기에 사용합니까? 이게 네가 말하는거야... ? – MichaelAngelo

+0

나는 당신이 정보를 지역적으로 저장하고 있다고 가정했지만 데이터를 반환하는 웹 서비스라면 개념은 동일하다. 예, 서버에서 데이터를 검색하여 강력한 형식 (즉, Person의 배열)으로 반환하는 클래스가 있어야합니다. 컨트롤러는 그 데이터를 사용하여 뷰를 업데이트합니다. – michaels

+0

첫 번째 뷰 컨트롤러는 webservice에서 사람을 가져옵니다 ... 그러나 모든 사람과 함께 tableview는 전화로 다운로드되어 배열에 저장되는 plist입니다. 그러나 모두 동일한 데이터 출력을가집니다. 그래서 기본적으로 나는 2 가지 방법을 가지고있다. 하나는 웹 서비스에서로드하고 하나는 배열에서로드하는 것이지만, 둘 다 Person 객체를 만들고 viewController와 해당 뷰 컨트롤러에 푸시하는 동일한 "메소드"클래스에서 "이해한다" Person 객체를 사용하여 뷰에 출력 ... MVC입니까? – MichaelAngelo

관련 문제