2011-11-18 1 views
1

사전 항목이있는 사전으로 plist를 만들었습니다. 나중에 사용할 각 ABRecord 속성에 하나씩 있습니다. kABEmailProperty/email :에 대한 참조를 저장하고 extern NSString const를 사용하는 방법은 무엇입니까?

이 사전은 키/값이 같은NSStrings 있습니다.

은 내가 (inRecord는 ABRecord 가정) 압축을 푼 PLIST 사전 을 열거하여 지정된 ABRecord에서 값을 수집하기 위해 압축을 푼 PLIST를 사용할 수 있도록하려면 : 내가 제대로 참조 어떻게

__block NSMutableArray *valueGroup = [[NSMutableArray alloc] init]; 

[self.propsDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 
     NSString *valueString = [inRecord valueForProperty:key]; 
     if (valueString) { 
      NSDictionary *dict = [NSDictionary dictionaryWithObject:valueString forKey:obj]; 
      [valueGroup addObject:dict];  
       } 
      } 
     }]; 

이므로 문자열 대신 ABGlobals.hABRecord 전역 속성 참조가 포함되어 있으므로 plist에 저장되어 있습니까?

& 키와 (id) 키 및 (void *) 키를 사용해 보았습니다.하지만 실제로는 주위에이라는 메시지가 표시됩니다.

글로벌 externs 사용에 관한 다양한 질문을 통해 검색하는 데 실패했지만, 유익했습니다. 내가 제대로 이해하면

+0

더 자세히 설명 할 수 있습니까? "이 사전은 다음과 같은 키/값 NSStrings입니다 : kABEmailProperty/email"은 무엇을 의미합니까? 이 사전들 중 하나의 예를 들려 줄 수 있습니까? "ABRecord' 전역 속성 참조"란 무엇을 의미합니까? –

+0

나는 속성으로 키를 NSString으로 사용하는 ABRecord 속성 () 사전과 사용하려는 NSString 값을 포함하는 plist 사전을 만들었습니다. 예를 들어 키 : @ "kABEmailProperty"값 : @ "email". 그럼 내가 사용할 수있는 배열을 채우기 위해 (블록에서) 이들을 사용하고 싶습니다. 나는 NSString의 방식으로 AddressBook 전역 const를 참조하는 방법이있을 것이라고 생각했다. 계급이나 무언가 같은 것이지만, 물론 작동하지 않는다. – lulu

+0

이름이 아닌 주소록 상수를 사전 키로 사용해보십시오.그러면'key'의 값은'kABEmailProperty'와 같은 문자열 (또는 최소한 문자열)이 될 것입니다. –

답변

0

, 당신은 다음과 같은있어 :

NSString *foo = "kABEmailProperty";

그리고 당신은 이런 식으로 뭔가를 할 수 있도록하려면 :

[inRecord valueForProperty:kABEmailProperty];

에 기초 foo의 값. 옳은? "kABEmailProperty"라는 이름은 런타임에 (쉽게) 액세스 할 수 없으므로 직접 수행 할 방법이 없습니다. 그것은 단지 컴파일 타임 이름입니다.

내 제안은 모든 키가 포함 된 사전을 만드는 것입니다. 이 같은이 같은

NSDictionary *keys = [NSDictionary dictionaryWithObjectsAndKeys:kABEmailProperty, @"kABEmailProperty", kABOtherProperty, @"kABOtherProperty", ..., nil];

그리고 당신이 할 수있는 일 :

[inRecord valueForProperty:[keys objectForKey:foo]];

kABEmailProperty이 실제로 가지고있는 값으로 문자열 @"kABEmailProperty"에서 매핑을 확인합니다.

+0

난 당신이 내가 그 문자열을 참조에 사용하려는 경우 문자열에 속성을 매핑해야한다고 말하는 것 같아요. 나는 실제로 키에 @ "kABEmailProperty"를 사용할 수 있기를 원했고 값에 대해서는 "@"전자 메일을 사용하려고했습니다. – lulu

+0

그래서 나는 당신의 제안에 따라 사전을 만들었고 블록에서 그것을 참조 할 수 있으며 필요한 배열을 만들기 위해 필자의 문자열 'labels'과 함께 plist를 사용할 수있다. 덕분에,이 속도를 통해 나를 얻을 수 있습니다. – lulu

관련 문제