2011-10-31 2 views
3

사과 데이터 섹션 및 여기에 스택 오버플로에 대한 핵심 데이터를 많이 읽었으며 응용 프로그램에 구현하려고하기 전에 몇 가지 질문을하고 싶습니다. 프로그래밍 된 데이터로만 가능합니다.프로그래밍 된 데이터 응용 프로그램을 코어 데이터 응용 프로그램으로 변환

응용 프로그램에 대한 아이디어는 다음과 같습니다. 사용자는 레이서입니다. 그는 다른 회로를 운전합니다. 각 회로에는 특정 속도와 효율로 구동되는 여러 개의 명명 된 곡선이 있습니다. 그래서 애플리케이션은 회로를 저장해야하며, 각 회로에 대한 여러 곡선과 최고 속도와 효율 (예 : 문자열 "미완료", "양호", "불량")을 저장하는 개별 곡선을 통한 많은 드라이버 (예 : 200)가 저장되어야합니다. drivethroughs는 대기열에있는 응용 프로그램에서 사용되며 마지막 위치는 드라이버의 시간과 경험에 따라 통계 데이터를 향상시킬 수 있도록 200 drivethroughs라고 말합니다.

나는 적절한 매개 변수와 관계를 사용하여 개체를 만들었습니다.

이제 시작을 위해 샘플 회로를 정의하고 싶습니다.이 회로는 응용 프로그램을 처음 시작할 때 만들어지며 나중에 사용자가 변경하거나 입력 한 데이터로로드됩니다.

1 - 데이터 량이 크지 않기 때문에 처음 실행했을 때 데이터를 생성 할 수 있었고 코어 데이터에 저장 한 다음 애플리케이션의 각 시작에서 어떻게 든 핵심 데이터가 있는지 여부를 확인하고 그것을 바탕으로 새로운 것을 만들거나 현재를 사용하십시오. plist에 데이터를 저장하고 xml 등을 통해 데이터를 가져 오는 것에 대해 읽었지만이 작업을 수행 할 필요가 없습니까? 데이터를 생성하고 저장 한 다음 처음으로 앱 시작 여부를 알기 위해 데이터가 있는지 확인할 수 있습니까?

2 - 큐를 코어 데이터에 저장하는 방법을 정확히 모르겠습니다. 순간에 나는 머리 속에서 그렇게 설계했다. 각 Curve의 Queue는 index라는 매개 변수를 사용하여 많은 관계가있는 Drivethrough 엔티티로 구성 될 것이므로 어떤 드라이브가 처음이고 어느 것이 마지막인지를 알 수있다. 나는 그때 어떻게 첫 번째 드라이브를 제거하는 대기열 기능을 구현할 것인지 잘 모르겠습니다. 모든 데이터를로드하고 대기열에서 처리 한 다음 모든 데이터를 코어 데이터에 저장해야합니까? 또는 어떤 종류의 제거를 처음부터 끝까지 유도하고 색인을 다시 말합니까?

3 - 나는 모든 데이터로드가 "viewWillAppear"의 내보기 컨트롤러에서 이루어져야한다고 말하고 싶습니다. 사용자가 각 드라이브의 저장 또는 입력 버튼을 누른 후 즉시 저장하십시오.

나는 코드를 묻지 않고있다. 나는 누군가에게 내가 일반적으로 좋은 접근법인가, 아니면 당신이 그것을 완전히 다른 방향으로 할 것인지를 말하기를 좋아할 것이다.

감사합니다. 외부 PLIST 파일

답변

1

1) 데이터 저장 후 다음이 사전을 반복하고 핵심 데이터 저장소로 가져 오기 +dictionaryWithContentsOfURL: 통해 NSDictionary로 가져 오면,이 경우에는 필요하지 않다. 외부에서 회로 데이터를 직렬화하여 사용자가 회로를 가져올 수 있도록하려는 경우 또는 plist에서 XML 데이터를 편집하여 초기 회로를 수동으로 변경할 수 있어야합니다.

2) Pre iOS-5.0, 엔티티는 코어 데이터에 순서가 지정되지 않은 NSSet으로 저장됩니다. iOS 4.x를 타겟팅하는 경우 대기열에 주문을 저장하는 속성을 추가해야합니다.이 속성을 사용하면 마지막으로 추가 된 항목을 계산할 수 있습니다. 엔티티를 검색하고 가장 높은 번호의 정렬 속성을 반환하는 메소드를 작성해야하므로 다음 drivethrough 정렬 속성에 사용할 항목을 알 수 있습니다. iOS 5를 타겟팅하는 경우0 만 입력하면 관계가 주문 됨으로 표시되어 NSOrderedSet으로 저장됩니다. 참조 :

3)Core Data Release Notes for iOS 5.0 - Managed Objects-viewWillAppear:의 데이터 로딩 코드를 실행하면 데이터를 생성하거나로드하는 데 걸리는 시간에 따라 달라집니다. 눈에 띄는 시간이 걸리면 코드가 실행 중일 때 UIKit이 실행되는 기본 스레드를 차단하므로 동 기적으로 수행하지 않을 것입니다. -viewWillAppear: 시간이 사소 (100-200ms 미만) -viewWillAppear:에서 시작할 수있는 백그라운드 스레드에서 데이터를 생성하려고합니다. 이를 수행하는 가장 쉬운 방법은 Dispatch Queuedispatch_async()

+0

을 사용 했습니까? -viewDidAppear : 배경 스레드입니까? 아니면 정말로 - viewWillAppear 의미 : 그리고 그것을 이해하지 못해? – Glademist

+0

'-viewDidAppear :'에 데이터를로드하고 활동 또는 진행 상태 표시기 뷰를 표시하면 이는 별다른 문제가 아닙니다. 그러나 로딩 과정이 너무 오래 걸린다면,'-viewWillAppear :'는 로딩 코드가 완료 될 때까지 리턴되지 않을 것이라고 (백그라운드 스레드에서 실행되지 않는 한). – Andrew

+0

나는 지금 명확하게 이해한다, 너를 대단히 감사한다. – Glademist

관련 문제