2011-11-18 22 views
1

我已經做了一個plist作爲詞典與詞典詞條,每個ABRecord屬性,我想以後使用。如何存儲引用,然後使用extern NSString const?

這些字典是鍵/值NSStrings這樣的: kABEmailProperty/email

我想通過枚舉解壓後的plist字典(假設inRecord是ABRecord),以能夠使用解壓縮的plist從指定ABRecord收集值

__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];  
       } 
      } 
     }]; 

我如何正確引用,所以它是ABRecord全球性屬性參考ABGlobals.h而不是字符串存儲在plist?

我已經嘗試過使用&鍵和(id)鍵和(void *)鍵,但我真的只是大約在左右。

我在搜索有關使用全局extern的各種問題方面沒有成功,儘管這已經提供了信息。

+0

你能澄清一點嗎? 「這些字典是這樣的關鍵/值NSString:kABEmailProperty/email」是什麼意思?你能舉一個這樣的詞典嗎? 「'ABRecord'全局屬性參考」是什麼意思? –

+0

我做了一個plist字典,其中包含使用屬性作爲NSString的密鑰和我想要使用的NSString值的ABRecord屬性字典()。例如一個鍵:@「kABEmailProperty」,值爲:@「email」。那麼我想使用這些(如在塊)來填充我可以使用的數組。我認爲可能有一種方法可以通過NSString的方式來引用AddressBook全局常量,就像種姓或其他東西一樣,但當然這是行不通的。 – 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」作爲密鑰,並使用@「email」作爲值。 – lulu

+0

所以我根據你的建議做了一本字典,並且可以從塊中引用它,並且我仍然能夠使用我的字符串'標籤'的plist來創建所需的數組。謝謝,這有助於讓我度過這個速度顛簸。 – lulu

相關問題