2012-04-25 2 views
9

CoreData 속성이 비어 있는지 확인하는 방법을 찾고 싶습니다. 속성 자체는 2 진 데이터 유형입니다. 속성이 비어 있다면 클래스를 다운로드하여 일부 속성을이 속성에 저장할 수 있습니다.CoreData 속성이 비어 있는지 확인하십시오.

CoreData 설명서에 따르면 개체가 존재하는지 확인하기 위해 계속해서 가져 오면 안됩니다. 가능하면 이것을 할 수있는 방법이 있는지 궁금합니다. 이 '법'을 위반하지 않고?

이것은 CoreData를 처음 사용하는 시도입니다. 나중에 코드를 추가하는 중입니다. 조금 더 고통 스럽지만, 전체적으로 지금까지 모든 것이 괜찮아 보입니다. 속성에 값이 있는지 확인하는 논리적 인 방법을 찾아야합니다. 그렇지 않으면 새로운 데이터를 다운로드하고 저장해야합니다. 그렇다면 속성에있는 것을 사용합니다.

업데이트

:

난 그냥이에 휴식을 잡으려고 노력하지만 읽기 된 CoreData 프레임 워크에서이 방법을 발견했다. 그것이 도움이 될지 확실하지 않은 것. 너희들은 어떻게 생각하니?

willAccessValueForKey : 키 - 값 관측 액세스에 대한 지원을 제공합니다. 알림.

  • (void) willAccessValueForKey : (NSString *) key 매개 변수 key 수신자 속성 중 하나의 이름입니다. 토론 자세한 내용은 didAccessValueForKey :를 참조하십시오. 다음 예제와 같이 과 같이이 메소드 을 nil 키 값과 함 2 호출하여 결함이 발급되었는지 확인할 수 있습니다.

[aManagedObject willAccessValueForKey : nil];

잘 모르겠습니다 ... 이해가 안되는 것들 키 - 값 관찰 액세스 알림을 지원합니다. ???

답변

11

값이 액세스 될 때 알림입니다.

정확하게 이해한다면 엔티티가 존재하지만 엔티티 내의 속성을보고 싶지 않을 것입니다. 그래서, 나는 당신이 옵션 속성으로 표시했다고 가정합니다.

rawData라는 이진 데이터 속성이 있다고 가정 해 보겠습니다. 이 속성에 대한 데이터 세트가없는 @ "MyEntity"오브젝트를 데이터베이스에서 모두 찾으려는 경우이 가져 오기 요청을 발행합니다.

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"]; 
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0]; 
+0

괜찮습니다. 고맙습니다. 내가 많은 가져 오기 요청을 발행하는 것은 나쁜 일이라고 읽었 기 때문에 그저 걱정할 필요가 없다. : P –

+3

빈 속성을 가진 객체를 만들지 못하게 할 수있다. 또는 spacial nil/non-nil 속성 값을 가질 때 데이터베이스 변경 사항을 모니터하고 전역 목록에 오브젝트를 추가/제거하는 오브젝트를 빌드 할 수 있습니다. –

관련 문제