테이블 뷰를 사용하여 일련의 모델 객체 (각각은 "NTTrip"의 인스턴스 임)의 정보를 표시하는 간단한 iOS 앱을 작성하고 있습니다. 나는 UITableViewController의 단일 하위 클래스를 사용하여 뷰와 모델 객체 세트 모두를 관리할지 또는 모델 객체를 관리하는 논리를 테이블 뷰의 데이터 소스 역할을하는 새 객체로 분리해야 하는지를 결정한다. 즉, 일종의 로직을 "보기 컨트롤러"와 "모델 컨트롤러"로 나누었습니다. 이것은 좋은 생각입니까, 아니면 필연적으로 필요로하지 않는 시스템에 복잡성을 추가할까요?UIViewController와 별도의 데이터 소스 개체를 사용하여 모델 개체를 관리 하시겠습니까?
답변
일반적으로 UITableView의 데이터 소스와 같은 특정 책임을 비 UIViewController 컨트롤러로 분할하는 것을 좋아합니다. 그 분리로 인해 컨트롤러를 테스트하고 유지 보수하는 것이 더 쉬워 졌다고 생각합니다.
그러나 항상 그런 것은 아닙니다. UITableViewController 사용을 고려하고 있다면 테이블 뷰가 화면을 채울 것으로 예상하고 여기 UIViewController 하위 클래스가 담당 할 다른 많은 동작이 없을 것임을 의미합니다. 각 컨트롤러에 대한 명확한 독립적 인 책임이 없으면 여러 컨트롤러가 불필요하게 복잡해질 것이라고 생각합니다.
하나의 대안으로 테이블 뷰의 대리인 및 데이터 소스 역할을하는 단일 UIViewController 하위 클래스가있을 수 있습니다. 컨트롤러는 NTTripService
컨트롤러를 호출 할 수 있습니다.이 컨트롤러는 사용자의 NTTrip
개체를로드하고 유지하며 많은 UIViewController 하위 클래스에서 표시 할 수 있도록합니다.
컨트롤러는 일반적으로 앱에서 가장 복잡한 부분이며 데이터와 대화하고보기를 관리해야합니다. iOS에서는 일반적으로 데이터 컨트롤러가 없습니다. 따라서 테이블 뷰 컨트롤러는 모델과 통신하여 테이블 뷰에 적합한 데이터를 표시해야합니다. 다른 데이터 컨트롤러가 데이터 모델과 대화하고 데이터 소스로 작동하도록함으로써 원래 컨트롤러는 무엇을 할 수 있습니까? 다른 극단은 물론 작업의 모든 부분을 별도의 컨트롤러로 분류하는 것이지만 문제는 그 부분을 보게됩니다.
결론 - 단일 테이블보기 컨트롤러는 데이터와 테이블보기를 모두 관리해야합니다. 즉 컨트롤러가 의도 한 것입니다.
렌치 - 다른 컨트롤러에서 동일한 데이터를 관리 (편집, 사용) 한 경우 Jonah가 제안한대로 서비스에 해당 데이터를 고려할 수 있습니다. 그렇지 않으면 단지 불필요한 작업과 복잡합니다.
- 1. 스프링 관리 개체가 아닌 스프링에게 관리 개체를 제공 하시겠습니까?
- 2. 별도의 모델 방법을 사용하여 트랜잭션 관리
- 3. netbeans에서 jndi를 사용하여 데이터 소스 개체를 만드는 방법
- 4. TreeViewItem에 개체를 저장 하시겠습니까?
- 5. 개체를 특성에 저장 하시겠습니까?
- 6. 개체를 System.Data.Linq.DataQuery를 System.Linq.IQueryable로 변환 하시겠습니까?
- 7. 데이터 개체를 개체에 삽입
- 8. 개체를 별도의 하위보기로 전달할 수 있습니까?
- 9. 는 별도의 파일에 두 개체를 그리기
- 10. 다른 ISerializable 개체를 포함하는 ISerializable 개체를 serialize
- 11. 별도의 개체를 사용하여 서버 참조를 포함 할 수 있습니까?
- 12. CTFont 개체를 완전히 해제 하시겠습니까?
- 13. 코코아 - 개체를 다시 초기화 하시겠습니까?
- 14. 셰어 포인트에 개체를 배치 하시겠습니까?
- 15. 수정 된 개체를 반환 하시겠습니까?
- 16. ASP.NET - 개체를 WCF로 전송할 때 데이터 전송 개체를 사용해야합니까?
- 17. 개체를 만든 개체를 어떻게 참조합니까?
- 18. 작업자 역할이 모델 개체를 만들지 못합니까?
- 19. LINQ 데이터 개체를 전송하는 중
- 20. 컨트롤러 뷰 데이터 개체를 jquery로
- 21. API 디자인 : 데이터 영역 개체를 사용하거나 복사/복제 하시겠습니까?
- 22. 관리 인덱스보기에 관련 개체를 추가하려면 어떻게해야합니까?
- 23. 모델 개체의 연결된 개체를 업데이트하려면 어떻게해야합니까?
- 24. SOAP 봉투에서 클래스 개체를 검색 하시겠습니까?
- 25. 소스 컨트롤에없는 PowerBuilder 개체를 찾을 수있는 도구
- 26. Linq를 사용하여 개체를 일부 속성으로 정렬하고 처음 두 개체를 선택하십시오.
- 27. Django : 다른 테이블의 결과로 개체를 필터링 하시겠습니까?
- 28. 목록에 개체를 저장 한 다음 개체를 변경하십시오.
- 29. 새 개체를 반환하거나 생성자에서 멤버를 초기화 하시겠습니까?
- 30. 개체를 UITypeEditor에 전달하기
정말 고마워! 마지막 생각은 내가 생각하고 있던 선을 따라 정확하게 나온다. 필자는 데이터에 액세스하기 위해 적어도 두 개의 다른 뷰 컨트롤러가 필요하다는 것을 알고 있으므로 서비스 컨트롤러를 만드는 것이 좋습니다. – Sean