2010-08-01 3 views
1

Core Data를 사용하면 전체 행 대신 Employee에서 성, 이름 선택과 같은 문을 생성 할 수 있습니까?코어 데이터에서 부분 데이터 (전체 행 대신 특정 열을 선택)를 검색 할 수 있습니까?

Departments/Employees의 예에서는 부서에서 사용할 수있는 부서를 표시하고 클릭하면 해당 부서에서 사용할 수있는 직원을 표시하는 Navagation 컨트롤러 스타일 응용 프로그램을 작성하겠습니다. 어떤 이유로 든 Employee 객체가 크다고 가정 해 봅시다. 필자는 EmployeesViewController에서 목록보기에 이름을 표시하기 위해 거대한 개체 집합을 검색해야하는 이유를 알지 못합니다. 어쨌든 특정 부서의 모든 직원에 대해 Name 필드 (아마도 2 : FirstName, LastName)를 요청할 수 있습니까?

+1

SQL 데이터 테이블, 행 및 열과 관련하여 핵심 데이터를 오랫동안 생각하지 않도록 도움을줍니다. Core Data는 실시간 객체 간의 복잡한 상호 작용을 처리하도록 설계된 객체 그래프 관리 시스템입니다. SQL의 제한된 패러다임을 생각해 보면 대부분의 기능이 느슨해집니다. – TechZen

답변

1

예. -[NSFetchRequest setPropertiesToFetch:]을 사용하십시오. iOS 3에서만 사용할 수 있습니다. & OS X 10.6 이상.

+0

많은 감사! 나는 이것을 지금 시험해 볼 것이다. – Mario

+0

시머스의 조언 또한 좋습니다. 데이터 세트가 정말 크고 베어 SQL에 익숙하다면 대신 SQL을 사용하는 것이 더 쉬울 수도 있습니다. – Yuji

+0

감사합니다. Yuji, 방금 시도했는데 정확히 필요한 부분입니다! – Mario

2

직원 오브젝트가 매우 크고로드가 너무 비싸면 일대일 관계로 파티셔닝하는 것이 좋습니다. 이 같은 필드 목록이있는 경우 : 등등

Employee 
     id 
     department 
     manager 
     ... 
    EmployeePersonalInfo 
     employee_id 
     SSN 
     DOB 
     home_address 
     home_phone 
    EmployeeJobDescription 
     employee_id 
     job_title 
     start_date 
     salary_class 

그리고 :

Employee: 
    id 
    name 
    SSN 
    DOB 
    home_address 
    home_phone 
    department 
    office_number 
    office_phone 
    manager 
    job_title 
    salary_class 
    start_date 
    ... 

을 당신은이 점을 나눌 수 있습니다. 가장 일반적인 개체의 경우 가져온 데이터를 가장 관련 있고 일반적으로 액세스되는 필드로 제한하는 것이 좋습니다. 그냥 보조 노트로

3

:

조기 최적화의 위험에주의. 테스트를 거치지 않고 베어 본 가져 오기가 실제로 문제가 아니라면 가져 오기를 조정할 필요가 없습니다. 코어 데이터는 처음에 나타나는 것보다 훨씬 효율적으로 만드는 많은 최적화 기능을 가지고 있습니다. 대부분의 경우 가져 오기를 조정할 시간 낭비입니다.

수천 개의 개체를 표시하는 테이블이있는 경우 일반적으로 모든 시간에 수십 개의 실시간 개체 만 메모리에 저장됩니다. 기본적으로 코어 데이터는 객체를 오류, 즉 속성 값이로드되지 않은 객체의 유령으로 가져옵니다. 특정 개체의 특정 특성에 액세스 할 때만 해당 개체가 메모리에 완전히로드됩니다.

SQL 배경에서 오신 경우 SQL에서 생성 된 객체를 수동으로 사용하는 데 익숙 할 수 있습니다. 핵심 데이터는 모든 것을 처리하고 수동으로 할 수있는 것보다 훨씬 효율적입니다. SQL을 사용하여 작업 한 직관적 인 가정은 핵심 데이터에 적용 할 때 수행해야하는 수동 최적화 정도에 관한 것입니다.

대신, 먼저 간단하고 쉬운 방법을 선택하고 경우에만 당신 테스트을 최적화하고 병목 현상을 찾을 수 있습니다. 대부분의 경우, 최적화에 대한 불안감은 완전히 부당하다는 것을 알게 될 것입니다.

관련 문제