2010-06-16 6 views
2

그래서 약 12 ​​개의 엔티티가 정의되고 서로 관련되어 있고 속성과 함께 .xcdatamodel이 있습니다. 지금까지 나는 이것을 GUI에서 NSTableViews를 사용하여 데이터를 표시/입력하고 각 엔티티에 대해 인스턴스화하는 NSArrayControllers를 사용해 왔습니다. 이것은 모두 잘 작동합니다. 그들은 모두 App Delegate의 MOC (Managed Object Context)에 연결합니다.코어 데이터, 관리되는 객체 컨텍스트, NSArrayController .. 조금 똑바로 내게

하지만 이제는 이러한 배열의 데이터에 프로그래밍 방식으로 액세스하려고 시도하고 있습니다. 내가 실제로해야만하는 것과 같이 많은 읽기 후에 MOC로 가서 주어진 엔티티에 대한 데이터를 가져온다. 나는 아직이 일을하지 않고 있지만 괜찮습니다.

비록 내가 이해가 안되는 것은 코어 데이터를 NSTableView 등을 통해 입력하지 않을 때 NSArrayControllers를 사용하지 않는 방법입니다. 마치 내 프로젝트의 Model 패키지에서 (GUI를 건드리지 않는다.) 일부 .xcdatamodel Entities를 완전히 처리하고 싶다. 엔티티의 "컨텐트를 준비"할 수 있도록 NSArrayController를 인스턴스화하고이를 관리하고 초기화해야합니까? 아니면 MOC에 직접 연결하여 특정 Entity에 대한 데이터를 추가/제거/가져올 수있는 다른 방법이 있습니까? 다음> NSArrayController 및 모델 < - -> MOC

답변

2

당신은 소요

무슨 말인지 나는 간단한 경우보기 <을하고 있어요 않는 것들로 작업하는 방법에 관해서는 정말 불분명 해요이다 NSFetchRequestexecuteFetchRequest:error: 방법을 NSManagedObjectContext에서 확인하십시오.

어레이 컨트롤러를 통해 데이터에 액세스하는 것은 까다로울 수 있습니다. 배열 컨트롤러는 일반적으로 UI 요소와 함께 사용하도록 설계되었습니다. 어레이 컨트롤러가 UI를 멋지게 유지하는 데 사용할 몇 가지 트릭이 있습니다. 예를 들어 배경 스레드에서 항목을 가져옵니다. 이 중 많은 부분을 구성 할 수 있지만 가져 오기를 수행하는 정보에 액세스하는 것이 좋습니다.

2

NSArrayController 및 관련 클래스는 선반 MVC 디자인 컨트롤러로 사용할 수 있습니다. 따라서 실제 기능은 UI를 데이터 모델에 연결하는 것입니다. 그렇지 않으면 모델을 다루어야 할 때 대개 프로그래밍 방식으로 처리합니다.

모델에 프로그래밍 방식으로 액세스하려면 대개 인출 요청 (NSFetchRequest)으로 시작하여 특정 엔터티의 적절한 인스턴스를 찾습니다. 그런 다음 엔티티 관계를 탐색하여 가져온 엔티티와 관련된 엔티티의 다른 모든 인스턴스를 찾습니다.

예 : 일정 유형 앱이 있다고 가정합니다. 엔티티는 요일 및 이벤트입니다. 매일 여러 이벤트가 있지만 각 이벤트에는 하루 만 있습니다.

일주일 동안 이벤트를 확인하려면 날짜 속성이 7 일 범위에서 느껴지는 요일 객체를 가져옵니다. 그런 다음 매일 관련 객체에 대해 객체를 차례로 요청합니다.

iOS는 아직 바인딩을 지원하지 않으므로 코어 데이터를 사용하기위한 리소스를 직접 체크 아웃하여 모든 것을 수동으로 관리하는 방법을 확인하십시오.

+0

이 답변과 다른 대답은 모두 내 가져 오기 요청에 대한 답변입니다. 그러나 질문은 남아 있습니다.이 데이터를 '생성'하도록하려면 어떻게해야합니까? 예를 들어 엔티티 요일 및 이벤트가 있습니다. 내 앱이 특정 MOC에서 개최된다는 것을 어떻게 알 수 있습니까? 이러한 유형의 새로운 항목으로 MOC를 채우려면 어떻게해야합니까? 나는 반역 관계와 같은 것들을 무료로 얻을 것인가? 운좋게도 iOS 개발을하지 않아서 복잡성을 무시할 수 있습니다. – Nektarios

+1

제공된 컨트롤러에 바인딩하는 방법 이외의 핵심 데이터에 대해 알지 못한다고하시는 지요? 그렇다면 필자는 Apple docs에서 Core Data Programming Guide를 시작할 것을 권장합니다. UI를 사용하지 않으면 무료로 많은 것을 얻을 수 없습니다. 프로그래밍 방식의 액세스에는 잘 정의되고 프로그래밍되어야하며 모든 세부 사항이 필요합니다. – TechZen

관련 문제