.xibs를 사용 중이고 핵심 데이터를 사용하고 싶습니다. 가장 간단한 대답은 AppDelegate.h에 @property
을 정의하는 것입니다. 하지만 xml-parser 파일에서 내 모델을 채울 필요가 있고 많은 컨트롤러에서 데이터를 가져 오려고합니다. 따라서 [[[UIApplication sharedApplication] delegate] context]
을 사용하면 너무 추합니다. 잘 생긴 해결책이 있습니까?iOS 앱에서 NSManagedObjectContext를 전달하는 방법은 무엇입니까?
답변
서브 클래스 NSManagedObject
에있는 모든 객체에도 컨텍스트가 있음을 기억하십시오. Book
및 Author
(기본 예)라고 가정 해 보겠습니다. 이것은 Entitis ofc입니다. 관계 1 - n (한 명의 저자 - 여러 권의 책).
여기서는 성취하고자하는 것에 대해 잘 알지 못하지만 대부분의 응용 프로그램에는 마스터 세부 사항 세부 정보 ... viewControllers가 있습니다. 그래서 예를 들어 :
당신의 MainViewController는 AuthorsViewController
입니다. 이것은 저자가있는 tableView입니다. 저자를 두드리고 그가 쓴 책을 보려고합니다. 에 따라서 당신의 BooksViewController
당신은 하나 개의 모델 속성이 있습니다
@property (strong,nonatomic) Author *author;
당신은 여러 가지 방법으로 설정할 수 있습니다. 사용자 설정 도구, segue에서 전달 ... 신경 쓰지 마라. 나는 이것이 꽤 분명하다고 확신한다.
위의 내용을 수행 한 후에 이미 BooksViewController
에 컨텍스트가 있습니다. 당신이 쓸 때마다 :
self.author.managedObjectContext
이것은 올바른 문맥이 될 것입니다.
따라서 navigationController
앱을 사용하는 경우 AppDelegate
또는 singleton 클래스 또는 mainVC에 컨텍스트를 만들 수 있습니다. 한 번만 전화를 걸면 통과 할 NSManagedObject
에서 전화합니다.
당신은이 위대한 자습서를 시도 할 수 있습니다 : core data with a single shared uimanageddocument
는 싱글'..DataManager'를 만들고이를 데이터 저장소에 대한 액세스를 제어했다. – Wain
네, 생각했습니다. 아무 해결책이 없다면, 나는 싱글 톤을 만들 것입니다. –
[Core Data Release Notes] (http://developer.apple.com/library/mac/#releasenotes/DataManagement/RN-CoreData/index)도보십시오. .html) : * "... 중첩 된 컨텍스트를 사용하면 컨텍스트에 직접 액세스하는 대신 컨텍스트에 액세스하는 컨텍스트에 액세스 할 때"보기 배턴 패스 "방식을 채택하는 것이 중요합니다. 응용 프로그램 위임. " –