gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:36:00 26 4
gpt4 key购买 nike

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

我想以这种方式使用枚举和 NSDictionary 的组合(但我显然不确定这种方法的正确性):

//INTERFACE*********************
typedef enum {
Luke,Paul,Mark
}ValidName;

@interface Person : NSObject{
// some code

}

@end


//IMPLEMENTATION*******************
@interface Person(private){
NSMutableDictionary *_validNamesDict;
}
@end

@interface Person:NSObject
- (id)init
{
self = [super init];
if (self) {
_validNamesDict = [[NSMutableDictionary alloc] init];
[_validNamesDict setObject: @"Luke" forKey:[NSNumber numberWithInt: Luke]];
[_validNamesDict setObject: @"Paul" forKey:[NSNumber numberWithInt: Paul]];
[_validNamesDict setObject: @"Mark" forKey:[NSNumber numberWithInt: Mark]];
}

return self;
}

//Some code ....

现在,在类(class)的其余部分中,我用以下方式引用这个名称:

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

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

最佳答案

我认为你想要的是一个集合,而不是 map ——也就是说,一个NSSet,而不是一个 NSDictionary.

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

BOOL nameIsValid = [validNames containsObject:n];

关于cocoa - enum 和 NSDictionary 定义 Cocoa 中有效元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com