2012-03-28 3 views
0

저는 핵심 데이터를 배우고 대부분은 대처하고 있지만 구현 방법에 대해 약간의 문제가 있습니다.클래스간에 핵심 데이터를 어떻게 사용합니까?

내 앱 전체에서 동일한 핵심 데이터에 액세스하려고합니다. 여러 클래스에서 액세스하는 가장 좋은 방법은 무엇입니까? 전역 변수 (일반적으로 객체 지향 프로그래밍에서는 권장되지 않음)로 사용하거나 클래스간에 인스턴스 변수로 전달하는 것이 좋습니다.

답변

5

핵심 데이터 모델은 앱 전체에서 사용할 수 있습니다. 앱을 통해 관리 대상 개체에 쉽게 액세스 할 수 있습니다. AppDelegate 클래스의 인스턴스를 만들어야합니다.

예를 들어 연락처를 저장했다고 말하면됩니다. 뷰 컨트롤러에서 [managedObject valueForKey:@"name"] 만 사용할 수 있습니다.

1.

self.theappDel=[[UIApplication sharedApplication] delegate]; 

2 컨텍스트를 가져 AppDelegate에

의 인스턴스를 생성 요청 및 개체 설명을 가져옵니다.
NSManagedObjectContext*context=[self.theappDel managedObjectContext]; 
NSEntityDescription*entity=[NSEntityDescription entityForName:@"Contacts" inManagedObjectContext:context]; 
NSFetchRequest*request=[[NSFetchRequest alloc] init]; 
[request setEntity:entity]; 
NSManagedObject*managedObject=nil; 
NSError*error=nil; 
NSArray*objectList=[context executeFetchRequest:request error:&error]; 

3.

배열에서 관리되는 개체를 가져옵니다.
if([objectList count]>0) 
managedObject=[objectList objectAtIndex:0]; 
NSLog(@"The name: %@",[managedObject valueForKey:@"name"]) 

4.

은 당신이 그것을 필요로 다른 뷰 컨트롤러에서 singleton (또는 편리한 방법) 패턴을 사용하여 이름 개체를 전달합니다.

1

NSManagedObjectContext 인스턴스를 전달하거나 하나의 객체 NSManagedObject 인스턴스를 처리해야하는 경우 다음 클래스로 전달하십시오.

Xcode 코어 데이터 템플릿과 비슷합니다.

1

MagicalRecord 라이브러리를 살펴보십시오. 일반적인 가져 오기 요청을 훨씬 더 간결하게 만들뿐만 아니라 관리 대상 객체 컨텍스트에 액세스하기가 더 쉽습니다. [NSManagedObjectContext defaultContext];

관련 문제