2014-11-22 2 views
0

Swift/iOS/Xcode 6 프로젝트의 모든 부분을 레이어로 분리하려고합니다. 궁금한 점은 궁극적으로 입니다. 일반적으로 사용되는 프리젠 테이션 레벨 로직을 여러보기 컨트롤러에서 반복적으로 쓰지 않고 별도의 프리젠 테이션 도우미 클래스로 옮기는 것이 좋습니다. 내가 목표로하고있는 일의공용 ViewController 프레젠테이션 로직을 프레젠테이션 도우미 클래스로 옮길 수 있습니까?

한 보고서 데이터를 표시하는 jQuery과 사용할 수 있습니다 : 여기

은이 넥타이와 컨텍스트를 제공하는 예이다. 이 UITableView는 사용자의 기본 설정 (nsuserdefaults)에 따라 7-10 행을 포함합니다. 각 행은 레이블에 대한 지역화 된 문자열과 일부 10 진수 값을 포함합니다. 하나 개의 행이 될 수있다 예를 들어

는 "판매는 이번 주에 만든 : $ 500.00"

나는 데이터베이스에 얘기 하 고 보고서 개체를 인스턴스화/돌아 가지에 대한 책임의보고 서비스 클래스가 있습니다. 이 보고서 개체에는 보고서의 원시 데이터, 즉 이번 주, 이번 달, 올해 등의 정보가 포함됩니다. 사용자가 이러한 모든 값을 표시할지 여부는 서비스와 관련이 없으며 모든 것을 가져옵니다.

그래서이 동일한 보고서를 사용하는 뷰 모델이 3 개이므로 사용자의 환경 설정을 검사 할 때마다 동일한 코드를 다시 작성한 다음 UITable에 배열을 만들고 바인드하고 레이블을 일치시킵니다. 서비스가 반환 한 객체의 보고서 값입니다.

더 나은 방법은 보고서 개체 (이전에 언급 한 보고서 값을 포함하는 개체)를 취하고 사용자의 환경 설정을 취한 다음 프레젠테이션 수준의 도우미 클래스를 만드는 것입니다. 일반적으로 이들을 결합하여 각각의 보고서 값과 일치하는 지역화 된 문자열 목록을 생성하며,보기 컨트롤러가 원하는 것과 관계가 없습니다. 어쩌면 요구 사항이 나중에 변경되면 (다른보기 컨트롤러가 더 많은 사용자 정의가 필요한 경우) 해당 클래스 내에서 플래그 또는 다른 함수 이름을 사용할 수 있습니다.

{ "금액이 주했다"

이 방법은 내가 할 일은 이제

var report = ReportHelper.GenerateReport(reportData, userSettings) 

과 같이 수있는 객체가 될 것이라고보고 같은 (모의 JSON 데이터)입니다 : "$ 100", "금 금액": "$ 500", "금년에 만든 금액 :"$ 10,000 "}

그리고 모든보기 컨트롤러에서 사용할 수 있습니다.

그 대안은 위의 값을 하드 코딩하는 것입니다 (분명히 아직 현지화 된 문자열을 가져 오는 것입니다)하지만 사용자 환경 설정 + 서식을 기반으로 모든 문자열 + 검사를 추가할지 모르겠습니다. 그것을 멀리 옮길 더 우아하게 보입니다.

감사합니다.

답변

0

나는 명확한 답을 제공하는 문제에 대해 너무 작은 알고 있지만, 기본적으로는이 옵션을 사용할 수 있습니다
- 상속
- 구성

가 자주 언급되고 있지만, 개인적으로 상속처럼 당신이 이상의 구성을 선택해야 계승.

헬퍼가 다소 컴포지션 같이 들리므로 선호하는 설정이됩니다. 특정 문제를 이해함에 따라 상속은 데이터의 중복으로 이어질 수 있으므로 컴포지션을 선택하는 것이 하나의 인수입니다.

그래서 모두 모두 당신이 바로

편집에 대한 것 같다 : 조성물은 "있다"관계 반면
상속, "있는"관계이다. 구성에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Object_composition을 참조하십시오. 자세한 내용은 http://en.wikipedia.org/wiki/Composition_over_inheritance을 참조하십시오. 구성을 선택하는 이유와시기는 언제입니까?

+0

감사합니다. 여러분이 작곡을 말할 때, 전형적으로 그 클래스는 그 자체로 다른 클래스의 권리를 가진 일종의 멤버를 가지고 있다는 것을 의미합니까? 이 경우 나는 어떤 것을 제공하는 책임이있는 서비스를 사용하고 있습니다. 그래서 그것이 구성이라는 것을 의미합니까? – NullHypothesis

+0

정확히 - 내가 추가 한 링크보기 – dogsgod

관련 문제