2013-01-07 34 views
0

我想通过一个字典围绕多个方法,并使用预定义的密钥集。我已经在我之前使用过的课程中看到过这一点,但我不确定如何设置它。这是我在m文件中使用的,例如:如何设置用于NSDictionary的键值对?

NSString *name = [dictionary objectForKey:kObjectsName]; 
NSDate *date = [dictionary objectForKey:kObjectsDate]; 

如何设置字典键的预定义名称?

+0

kObjectsName&kObjectsDate是一些字符串,它要传递到获取对象。请详细说明'我如何设置字典密钥的预定义名称? –

+0

你想要什么......设置值或获得值 – Rajneesh071

+0

因此,在我上面发布的代码中,这就是我将在方法内部使用的代码。我想知道如何做到这一点。在.h文件中设置这些默认名称的标准方式是什么? – Andrew

回答

1

你可以把#define语句在.m文件:

#define kObjectsName @"myName" 
#define kObjectsDate @"myDate" 

+0

使用'NSString * const'可避免在多个.m文件中使用该字符串的另一个副本。 – paulmelnikow

3

通常苹果留下了一堆标题中定义的常量,例如像在NSAttributedString Application Kit Additions

标准属性

归因串支持文本以下标准属性。如果密钥不在字典中,则使用下面描述的默认值。

NSString * NSFontAttributeName;
NSString * NSParagraphStyleAttributeName;
[...]

我的建议是使用自己的常量这个属性是太多的(有定义或使用全局常量变量)。

例如在.m文件(其中C是公司名称):

NSString* const CNURLKey= @"URLKey"; 
NSString* const CNupdateTimeKey= @"updateTimeKey"; 
NSString* const CNtagsKey= @"tagsKey"; 
NSString* const CNapplicationWillTerminateKey= @"applicationWillTerminateKey"; 
NSString* const CNtagAddedkey= @"tagAddedkey"; 
NSString* const CNtagRemovedKey= @"tagRemovedKey"; 
NSString* const CNcolorKey= @"colorKey"; 

而且在头文件:

extern NSString* const CNURLKey; 
extern NSString* const CNupdateTimeKey; 
extern NSString* const CNtagsKey; 
extern NSString* const CNapplicationWillTerminateKey; 
extern NSString* const CNtagAddedkey; 
extern NSString* const CNtagRemovedKey; 
extern NSString* const CNcolorKey; 

或者你也可以使用定义为好。

您也可以使用户更容易,使得返回包含所有变量列表的NSArrayNSSet的方法。

如果您需要仅保留少数属性,请重新考虑使用字典的选择,并使用包含可通过KVC访问的所有属性的类。

+0

我使用'FOUNDATION_EXPORT',我认为它比'extern'更受欢迎。 – paulmelnikow

+1

@noa对于Objective-C,FOUNDATION_EXPORT宏导致“extern”。 –

+0

这似乎是使用它的一个很好的理由。 – paulmelnikow

相关问题