2010-05-07 9 views
14

그래서 Core Data Snippets를 통해보고, 나는 다음과 같은 코드를 발견코어 데이터에서 고유 값을 가져 오는 방법은 무엇입니까?

... 
[request setEntity:entity]; 
[request setResultType:NSDictionaryResultType]; 
[request setReturnsDistinctValues:YES]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:@"<#Attribute name#>"]]; 

// Execute the fetch 
NSError *error; 
id requestedValue = nil; // WTF? This isn't defined or used anywhere 
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error]; 
if (objects == nil) { 
    // handle the error 
} 

이 큰 내가 필요한 것을 위해 완벽한 것을 ...하지만 어떻게 하나 실제로 그것을 사용합니까? 사전을 반환하기 때문에 가정합니다. 값을 얻으려면 키가 필요합니다. 그러나 키 정의는 어디에 있습니까? 그것은 "id requestedValue = nil"줄입니까? 그렇다면 "requestedValue"가 어떻게 키가됩니까? Xcode는 "requestedValue"선언에서 사용되지 않는 변수에 대한 컴파일러 경고를 제공합니다. 내가 뭔가를 여기에서 놓치고있는 것처럼 느껴진다.

미리 도움을 주셔서 감사합니다.

답변

28

requestedValue는 아무 것도 아니며 분명히 사용되지 않았습니다. 아마도이 예제 코드에 붙여 넣기 된 다른 예제의 일부 였을 것입니다. 누가 알겠습니까? 당신은 그것을 무시할 수 있습니다.

사전의 키는 가져 와서 모델에 정의 된 속성과 동일합니다. 예를 들어 name, age, phoneNumber 세 가지 속성이 정의 된 person 엔티티가 있고 name 만 요청한 경우 사전에 데이터가있는 유일한 키입니다. 그래서 : 당신은 밥, 샐리, 조, Freida 및 고소라는 이름의 데이터 저장소에 오명이있는 경우

[request setEntity:entity]; 
[request setResultType:NSDictionaryResultType]; 
[request setReturnsDistinctResults:YES]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:@"name"]]; 

// Execute the fetch 
NSError *error; 
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error]; 
if (objects == nil) { 
    abort(); 
} 
for(NSDictionary* obj in objects) { 
    NSLog(@"Person: %@", [obj objectForKey:@"name"]); 
} 
// ... 

그래서, 당신은 그 이름이 인쇄 볼 것입니다. 나이와 같은 다른 속성을 사용하려면 setPropertiesToFetch:에 설정된 배열에 추가해야합니다.

대부분의 경우 관리되는 개체를 검색하는 것이 가장 좋습니다. 객체에 오류가 발생하여 실제 액세스하지 않는 한 속성을 메모리에 가져 오지 않습니다. 또한 개체를 변경하려는 경우 개체를 관리 개체와 함께 저장소에 보관할 수 있습니다.

+1

완벽한 - 도움에 감사드립니다. 핵심 데이터 조각은 실제로 유용하지만 새로운 사용자 인 경우 조금만 상상할 수 있습니다. 도움 주셔서 감사합니다. – Andy

+4

"조금"상상력? 그들은 상상력을 불어 넣습니다. 내 유일한 지식의 원천이 애플이 쓴 문서 일 때마다 나는 내 자신을 때리는 충동을 느낀다. 고맙게도 StackOverflow에는 제이슨 코코 (Jason Coco) 등의 살인 전문가가 많습니다. 애플이 문서에서 작성한 모호한 암호 메시지를 이해하는 데 도움이됩니다. 애플은 훌륭한 제품을하지만 그들의 문서는 무한 제곱 + 1을 빨아 들인다. – SpaceDog

+2

setReturnsDistinctValues가 setReturnsDistinctResults로 변경된 것 같다. – mishod

관련 문제