2014-11-17 3 views
1

나는 IOS에 익숙하지 않고 Core Data에 대해 배우기 위해 CS193p Stanford의 강연을 따르고 있으며, 교수님은 핵심 데이터 어플리케이션 체크 박스를 체크하면 실제로 어떻게 될지와 비슷한 카테고리를 사용했다. 애플리케이션을 생성하고 핵심 데이터를 appDelegate에 저장합니다. 이것이 교수가 AppDelegate에서 managedObjectContext를 생성하고 컨텍스트를 컨트롤러에 전달하는 알림을 사용하는 데모입니다. 이제 배정을 위해 그는 UIManagedDocument를 사용하도록 요청했지만 어디에 넣을 지 혼란 스럽습니다. View Controller 또는 AppDelegate에서이를 선언하고 알림 센터를 사용하여 컨텍스트를 전달해야합니다. 그래서 나는 UIManagedDocument에 대해 어느 것이 더 좋은지 알고 싶습니다. SUIManagedDocument를 사용하고 초기화하는 곳

답변

1

내가 찾은 가장 좋은 방법은 (단지 샘플로) 새 프로젝트를 만들고, 묻는 메시지가 표시되면 '코어 데이터 사용'을 선택하고 AppDelegate를 살펴 보는 것입니다. 그것을 사용하여 어떻게 완료되었는지 그리고 가능하면 적절한 부분을 복사하십시오 (물론 약간의 조정이 필요할 것입니다). 하지만 대부분은 애플이 그것을 사용하는 방법을 배우는 데 사용한다.

managedObjectContext 속성을 가진 공유 인스턴스로 사용자 지정 클래스를 만듭니다.

AppDelegate의 application didFinishLaunchingWithOptions에서 sharedInstance를 만들고 'managedObjectContext'를 전달하십시오. 당신은 엑스 코드의 '정지'를 타격하여 응용 프로그램을 종료하면 당신이 일을 끝낼 이후 정상적으로으로 AppDelegate에 제대로 응용 프로그램을 종료하려고 할 때, 데이터, (저장되지 않습니다 또한

MyDataManager *dataManager = [MyDataManager sharedInstance]; 
dataManager.managedObjectContext = self.managedObjectContext; 

공지 사항).

[self saveContext];applicationDidEnterBackground에 있어야하며, 내면은 applicationWillTerminate이어야합니다. 필요할 때만 데이터베이스를 메모리에 쓰는 것이 좋습니다 (모든 변경시가 아님). AppDelegate에서 커밋하기 전에 데이터가 변경되었는지 여부를 묻습니다.

물론 managedObjectContext 인스턴스가 있으면 수동으로 저장할 수도 있습니다.

데이터베이스를 변경 한 경우 다시 실행하기 전에 시뮬레이터에서 앱을 삭제해야 할 수도 있습니다. 그렇지 않으면 이전 DB가 새 데이터베이스와 일치하지 않으므로 앱이 다운됩니다.

편집 : 어디서 읽었는지 기억이 나지 않지만 교수님은 데이터 (이미지 등)를 관리하기 위해 CoreData를 데이터베이스 pre-se로 사용하지 않습니다.

+0

그럼 UIManagedDocument의 목적은 무엇인가? –

+0

'UIManagedDocument' (내가 잘못하지 않은 경우)는 더 많은 문서 기반 응용 프로그램의 핵심 데이터를 관리하는 데 도움이되는보다 광범위한 클래스입니다. [여기] (https://developer.apple.com/library/IOS/documentation/UIKit/Reference/UIManagedDocument_Class/index.html)에서 더 많은 내용을 읽을 수 있지만, 요점은이 경우에는 필요하지 않다는 것입니다 케이스. – bauerMusic

1

UIManagedDocument를 데이터베이스에 대한 액세스를 초기화하려는 위치에서 초기화 할 수 있습니다. 과제 (작년)를 할 때 AppDelegate를 넣었습니다. 뒤에서 볼 때 UITabBarController에는 두 개의 ViewController가 있고 둘 다 컨텍스트가 필요합니다. 그래서 저는 Paul이 강의에서했던 것처럼 NSNotification 메커니즘을 사용했습니다.

그가 (프로젝트를 만들 때) "사용자 코어 데이터"체크 박스를 통해 UIManagedDocument을 사용하기 위해 제공하는 이유가 있었다 :

  1. 그를 설명하기 위해 간단했다
  2. (UIManagedDocument는 복잡성을 많이 처리합니다)
  3. UIManagedDocument를 사용하면 iCloud를 빠르게 사용할 수 있습니다.

방금 ​​검토 중이었습니다. 폴에서 소식을 듣고 싶다면 14 분 25 초 (UIManagedContext)의 강의 12 (2013-14 가을)와 14:50에 UIManagedContext를 가져 오는 두 가지 방법에 대해 이야기합니다. UIManagedDocument 또는 "핵심 데이터 사용"확인란을 선택합니다.여기

우리는 아이튠즈에서 과정에 대한 링크 : https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550