如何设置键值对以与NSDictionary一起使用?

时间:2013-01-07 17:13:06

标签: iphone objective-c ios nsdictionary key-value

我想使用预定义的密钥集围绕多个方法传递字典。我已经在之前使用的类中看到过这种情况,但我不确定如何设置它。这就是我在m文件中使用的内容,例如:

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

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

2 个答案:

答案 0 :(得分:3)

通常Apple会在标题中定义一堆常量,例如在NSAttributedString Application Kit Additions中:

  

标准属性

     

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

     

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

如果属性太多(使用define或使用全局const变量),我的建议是使用自己的常量。

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

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;

或者您也可以使用define。

您还可以让用户更轻松,制作一个返回包含所有变量列表的NSArrayNSSet的方法。

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

答案 1 :(得分:1)

您可以将#define语句放在.m文件中:

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