저는 핵심 데이터를 배우고 대부분은 대처하고 있지만 구현 방법에 대해 약간의 문제가 있습니다.클래스간에 핵심 데이터를 어떻게 사용합니까?
내 앱 전체에서 동일한 핵심 데이터에 액세스하려고합니다. 여러 클래스에서 액세스하는 가장 좋은 방법은 무엇입니까? 전역 변수 (일반적으로 객체 지향 프로그래밍에서는 권장되지 않음)로 사용하거나 클래스간에 인스턴스 변수로 전달하는 것이 좋습니다.
저는 핵심 데이터를 배우고 대부분은 대처하고 있지만 구현 방법에 대해 약간의 문제가 있습니다.클래스간에 핵심 데이터를 어떻게 사용합니까?
내 앱 전체에서 동일한 핵심 데이터에 액세스하려고합니다. 여러 클래스에서 액세스하는 가장 좋은 방법은 무엇입니까? 전역 변수 (일반적으로 객체 지향 프로그래밍에서는 권장되지 않음)로 사용하거나 클래스간에 인스턴스 변수로 전달하는 것이 좋습니다.
핵심 데이터 모델은 앱 전체에서 사용할 수 있습니다. 앱을 통해 관리 대상 개체에 쉽게 액세스 할 수 있습니다. 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
(또는 편리한 방법) 패턴을 사용하여 이름 개체를 전달합니다.
NSManagedObjectContext
인스턴스를 전달하거나 하나의 객체 NSManagedObject
인스턴스를 처리해야하는 경우 다음 클래스로 전달하십시오.
Xcode 코어 데이터 템플릿과 비슷합니다.
MagicalRecord 라이브러리를 살펴보십시오. 일반적인 가져 오기 요청을 훨씬 더 간결하게 만들뿐만 아니라 관리 대상 객체 컨텍스트에 액세스하기가 더 쉽습니다. [NSManagedObjectContext defaultContext];