코어 데이터 앱의 테이블 선택 및 테이블 행을 프로그래밍 방식으로 검색하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2259408

문제

테이블 뷰에서 하나의 "플레이어"를 선택할 때 핵심 데이터 앱을 만들려고 노력하고 있으며 모든 팀원 목록이 두 번째 테이블 뷰에 나타나고 두 선수가 동일하게 플레이했는지에 대한 열에 대한 열에 표시됩니다. "팀"(다른 엔티티).

이것은 일반적인 배열에서 테이블을 채우는 방법을 알고 있지만 ArrayControllers와 Core Data를 사용하여 상황에 대한 내 견해를 혼란스럽게 만들었 기 때문입니다.

이것에 어떻게 접근 하시겠습니까?

도움이 되었습니까?

해결책

귀하는 핵심 데이터 문제가 아니라 바인딩 문제입니다. :-)

당신은 확실히 손잡이를 가져와야합니다 코코아 바인딩 핵심 데이터를 다루기 전에. 이것은 문서에 명시되어 있으며 매우 사실입니다.

귀하의 질문의 주제는 신체와 다른 것처럼 보이므로 둘 다 대답하겠습니다.

팀원을 보여줍니다

핵심 데이터를 제외하고, 플레이어 인스턴스를 나타내는 테이블이 있다고 가정합니다. 플레이어는 하나의 팀이 있습니다. 팀에는 많은 선수가 있습니다. 따라서 플레이어 인스턴스는 팀원으로 "팀. 플레이어"(마이너스 자체)를 가지고 있다고 추론합니다. 핵심 데이터를 사용하여 모델을 관리하든 아니든 이는 전반적인 관계에 해당됩니다.

Cocoa 바인딩을 읽고 마스터하면 기본을 사용하여 설정하기가 어렵지 않다는 것을 알 수 있습니다. 마스터/세부 사항 설정 (세부 사항 부분을위한 추가 배열 컨트롤러, 단순성을위한 추가). 마스터 배열 컨트롤러는 모든 플레이어 인스턴스를 나타내며 세부 배열 컨트롤러는 팀원 또는 마스터 선택의 "팀. 플레이어"(마이너스 자체)를 나타냅니다.

Teammates Array Controller는 평소와 같이 엔티티 및 관리 객체 컨텍스트를 설정합니다 (문서 참조). "Contentset"은 "Team.Players"를 모델 키 경로로 사용하여 마스터 어레이 컨트롤러의 "선택"컨트롤러 키에 바인딩됩니다.

요령은 마스터 컨트롤러의 선택한 플레이어를 사용하여 필터링하는 것입니다. 일치합니다. 배열 컨트롤러로 할 수 있습니다 필터 술어. 아마도 "self! = %@"형식을 가진 하나, 여기서 " %@"는 마스터 배열 컨트롤러의 선택을 나타냅니다. 나는 당신에게 Predicates (복잡한 주제)를 남겨 둘 것입니다. 코드 ([myController setFilterPredicate : myPredicate])로 설정하거나 바인딩을 사용하여 설정할 수 있습니다. Predicates입니다 독립적인 핵심 데이터도.

선택하기

배열 컨트롤러가 테이블을 나타내는 배열을 담당하므로 배열 컨트롤러에 선택 사항을 물어 보는 것이 가장 좋습니다. 한 가지 방법은 -SelectedIndexes의 객체에 대해 -arrangedobjets에 요청하는 것입니다.

NSArray * selectedObjects = [[myArrayController arrangedObjects] objectsAtIndexes:[myArrayController selectedIndexes]];

당신은 또한 그것의 -selectedObjects를 요청할 수 있습니다. 이 두 가지 접근법 사이에는 분명히 이해해야 할 문서 (API 참조 및 개념 문서)에 의해 설명되는 차이점이 있지만 컨트롤러를 묻는 것이 가장 중요한 개념입니다, NSARRAYCONTROLLER 또는 및 프로토콜을 준수하는 일부 사용자 정의 컨트롤러를 사용하든 관계없이.

부인 성명: 사교적 인 저녁 후 급히 타이핑. 오류를 확인하지 않았습니다. :-)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top