enum和NSDictionary定义Cocoa中有效元素的列表

enum和NSDictionary定义Cocoa中有效元素的列表,cocoa,design-patterns,Cocoa,Design Patterns,我试图理解如何为类定义有效元素列表: 假设我有一个类People,我只需要接受3个字符串作为可能的有效名称 @“卢克”,@“保罗”,@“马克” 我曾想过以这种方式结合使用enum和NSDictionary(但我显然不确定这种方法的正确性): 现在,在本课程的其余部分中,我使用以下名称引用此名称: [_validNameDict objecWithKey:[NSNumber numberWithInt: Luke]]; 我很确定这不是最好的方法。你能给我一个有效的方法来处理这种情况吗?我读了一

我试图理解如何为类定义有效元素列表: 假设我有一个类
People
,我只需要接受3个字符串作为可能的有效名称
@“卢克”
@“保罗”
@“马克”

我曾想过以这种方式结合使用enum和NSDictionary(但我显然不确定这种方法的正确性):

现在,在本课程的其余部分中,我使用以下名称引用此名称:

[_validNameDict objecWithKey:[NSNumber numberWithInt: Luke]]; 

我很确定这不是最好的方法。你能给我一个有效的方法来处理这种情况吗?我读了一些关于使用extern关键字和定义将静态变量放入类中的内容。。。这可能是更好的方法吗

我想你想要的是一个集合,而不是一张地图——也就是说,一个
NSSet
,而不是
NSDictionary

假设您拥有集合
validNames
,您想确定名称
n
是否在集合中。初始化集合后,只需执行以下操作:

BOOL nameIsValid = [validNames containsObject:n];

我想你想要的是一个集合,而不是地图——也就是说,一个
NSSet
,而不是
NSDictionary

假设您拥有集合
validNames
,您想确定名称
n
是否在集合中。初始化集合后,只需执行以下操作:

BOOL nameIsValid = [validNames containsObject:n];

我相信有更好的方法来做你想做的事,但不清楚你到底想做什么。这些是什么的唯一有效值?在什么情况下使用这些值?在什么情况下它们的有效性很重要?@Chuck我正在为一个API开发一个库,其中一些函数只接受特定的值。所以我需要一种方法来限制使用库的开发者只使用这些值。我确信有更好的方法来做你想做的事情,但不清楚你到底想做什么。这些是什么的唯一有效值?在什么情况下使用这些值?在什么情况下它们的有效性很重要?@Chuck我正在为一个API开发一个库,其中一些函数只接受特定的值。因此,我需要一种方法来限制使用库的开发人员仅使用这些值。@“Jonathan Grynspan”在您看来,定义NSSet的更好方法是:在init函数中还是通过静态变量?您必须在某个点对其进行初始化,但如果每次都有相同的内容,使用单个
静态
实例,并在类'
+initialize
方法中对其进行初始化(有关如何使用该方法的信息,请参阅该方法的文档)。@“Jonathan Grynspan”在您看来,在init函数中还是通过静态变量定义NSSet更好?您必须在某个点对其进行初始化,但如果每次都有相同的内容,请使用单个
static
实例,并在类'
+initialize
方法中对其进行初始化(有关如何使用该方法,请参阅该方法的文档。)