2011-11-19 4 views
1

Apple의 "Use CoreData" 템플릿을 사용하는 iPad 용 프로젝트를 만들었습니다.NSFetchRequest (CoreData)를 사용하여 배열 채우기

몇 가지 사항을 맞춤 설정했습니다. 객체의 이름이지만 시스템은 그대로 유지했습니다.

Apple은 UITableViewControllerDetailViewController.h 인 간단한 UIViewControllerMasterViewController.h을 사용합니다. UITableView에있는 오브젝트 중 하나를 MasterViewController.h에 선택하면 해당 속성이 DetailViewController에 제공됩니다.

이제 문제 :

I는 모든 데이터 (오브젝트의 속성)을 표시한다 ResultsViewController.h라는 제 뷰 컨트롤러를 만들었다.

나는 하나 이상의 NSArray(s), 내 모든 데이터가 포함되어야 사용하려면 (단지 선택하지 만 모든를. 당신이 5 개체를 만든 경우, 당신은 NSArray 5 시간을 갖고 싶어 그래서).

(1) xcoredatamodel의 값을 ResultsViewController에 액세스하려면 어떻게 가져올 수 있습니까? 가져 오기 요청 보내기가 작동하지 않습니까?

(2) 내 UITableView (MasterViewController.h)에서 생성 한 객체 수를 어떻게 확인할 수 있습니까?

CoreData 구조 :

간단한, 하나의 엔티티, 여러 가지 속성, 즉 그것입니다!

고맙습니다.

답변

9

먼저 모든 데이터를 배열에 넣으면 안됩니다. 데이터 량이 증가하면 메모리 문제가 발생합니다. 핵심 데이터는 실제로 값 비싼 병렬 데이터 구조를 유지할 필요없이 매우 효율적으로 필요한 데이터를 가져 오도록 설계되었습니다.

우선 NSManagedObjectContextResultsViewController에 전달하고 필요에 따라 자체 데이터를 가져 오는 것이 좋습니다.

그러나 실제로 모든 데이터를 가져오고 싶다면 간단합니다.

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" 
     inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
NSError *error = nil; 
NSArray *fetchedObjects = [self.managedObjectContext 
     executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 

이제 배열 fetchedObjects에 모든 데이터가 포함됩니다. 평소와 같이 속성에 액세스 할 수 있습니다 (예 : 점 표기법 또는 KVC).

+0

고맙습니다. 답장을 늦게 받아들이는 이유 인 나 자신이 비슷한 해결책을 찾았습니다. – DAS