2

iOS 앱의 공통 패턴이어야합니다. 목록 항목을 표시하는 목록 컨트롤러가 있습니다. 스토리 보드를 사용하여 스토리 보드를 사용하여 새 항목을 추가하는 방법에 대해 설명합니다. 여기서는 이름을 수집합니다. 일단 해산되면, 나는 목록으로 돌아가서 추가 된 항목을 포함하도록 업데이트하고, 몇 가지 다른 작은 일을한다. 결정적으로, 모달 컨트롤러가 아닌 목록 컨트롤러의 일부인 로그를 작성해야합니다.모달에서 핵심 데이터 업데이트하기

어떤 시점에서 내 관리 대상 개체 컨텍스트에 새 항목을 삽입해야합니다.

1) PrepareForSegue를 사용하여 모달의 컨트롤러에 ManagedObjectContext을 통과 :

나는 두 가지 방법을 시도했습니다. 모달 컨트롤러에서 컨텍스트에 새 항목을 삽입하십시오. 이 시점에서 훌륭하게 작동합니다. 하지만 지금은 내 견해를 새롭게하고 내 통나무 선을 쓰고 싶습니다. 내가 viewWillAppear에 이것을 넣을 수는 없기 때문에 선을 처음로드하거나 다른 시간에 기록하지 않으려 고합니다. 모달에서 돌아온 후에야합니다.

2) 목록 컨트롤러를 모달 컨트롤러의 대리자로 만들어 목록 컨트롤러 자체에서 모든 작업을 수행 할 수 있고 저장 단추가 모달에 사용되면 목록 컨트롤러의 코드 만 호출 할 수 있습니다. 모든로드에서 실행되는 문제). 그러나 Item은 관리 대상이므로 컨텍스트를 참조하지 않고 만들 수는 없습니다. 모달 컨트롤러는 아무것도 모르는 상태이므로 항목을 모달에 삽입 할 수 없습니다. 컨텍스트없이 관리되는 개체를 만들 수있는 방법이 없기 때문에이를 또한 대리인에게 전달하고 List 컨트롤러에 삽입 할 수 없습니다.

이러한 종류의 흐름에 대해 확립 된 표준은 무엇입니까? 어쩌면 내가 두 가지의 조합을 사용해야합니다 - 모달 컨트롤러에 컨텍스트를 따라 전달하므로 자체 삽입을 처리 할 수 ​​있고 로깅을 처리하기 위해 목록 컨트롤러에서 대리자 코드를 호출 할 수 있습니까?

답변

0

1)과 2)의 조합이 내가 사용하는 것입니다. prepareForSegue에 새 관리 객체를 만들고이를 모달 뷰 컨트롤러에 전달합니다. 목록 컨트롤러를 모달보기 컨트롤러의 대리자로 설정하고 대리자 메서드에서 로깅을 업데이트하십시오.

모달에서 중요한 데이터를 무겁게 할 필요가 없으며, 모덜 데이터를 알 필요가 없습니다.

사실, 모달에 이름을 설정하는 경우 객체에 대해 알 필요조차 없으며 문자열 만 반환 할 수 있지만 객체를 전달하면 더 많은 것을 제공합니다. 당신이 그것을 좀 더 기능적으로 만들기로 결정한다면 유연성이 필요합니다.)

+0

아, 따라서 컨텍스트를 사용하는 segue에서만 관리 대상 개체를 만들고 컨텍스트가 아닌이 개체를 전달해야합니까? 아마도 당신은 그 객체를 델리게이트로 되돌려 보내고 (이제 속성이 설정 됨)리스트 컨트롤러를 삽입 할 것인가? 사용자가 추가를 확인하는 대신 모달을 취소하면 어떻게됩니까? 목록 컨트롤러에서 만든 관리 대상 개체에 어떤 속성이 설정되지 않고 삽입되지도 않았습니까? 정리 단추에 첨부 된 다른 대리인이 정리해야합니까? –

+0

모달에 컨텍스트를 전달하고 거기에 개체를 만드는 단순함으로 인해 유혹을받습니다. 따라서 로깅 부분에만 대리자를 사용할 수 있습니다. 그러나 당신이 당신의 대안을 말할 때 이제는 조금 비 숙련 된 것처럼 보입니다. 왜 모달이 핵심 데이터에 대해 잘 아는 것이 더 나은지 설명하고 많은 양의 대표단을 사용할만큼 중요하다면 설명 할 수 있습니까? 나는 삽입 (no logging) 후에 추가 단계가없는 상황에 대해 궁금해한다. 컨텍스트를 전달하면 대리인이 전혀 필요하지 않지만 위임을 통해 삽입해야합니까? –

+1

캡슐화에 대해 생각해보십시오.목록보기 컨트롤러는 이미 MOC에 대해 알아야하므로 모든 추가 및 삭제가 이루어지는 위치가 중요합니다. 모달의 목적은 단순히 전달한 객체를 구성하는 것입니다. 위임은 구현하기 쉽고 코코아에서 일반적으로 잘 이해 된 패턴이므로이를 사용하는 것이 좋습니다. 모달에 취소 옵션이있는 경우 대리자에서 다시 처리하여 새 개체를 삭제할 수도 있습니다. 당신은 무한한 방법으로 그것을 할 수 있지만, 당신은 확립 된 표준을 요구했습니다 ... – jrturton