来自 NSString 的 Objective-C 标识符

Posted

技术标签:

【中文标题】来自 NSString 的 Objective-C 标识符【英文标题】:Objective-C identifier from NSString 【发布时间】:2011-09-02 17:30:24 【问题描述】:

我想将一个 NSString 传递给一个方法,并将那个特定的 NSString 命名为一个新的 NSSMutableArray。令人困惑?以编程方式看起来像这样:

+ (void)newMutableArrayWithName:(NSString*)theArrayName

     NSLog(@"Creating an array that is named: %@",theArrayName);
     NSMutableArray* theArrayName = [[NSMutableArray alloc] init];

不幸的是,“theArrayName”与传递给方法的参数无关。有什么办法可以实现吗?

【问题讨论】:

你为什么想要那个? 即使在可以做到这一点的语言中,如果你认为你想动态命名一个变量,那你就大错特错了。 @sidyll 例如,有一个包含“everythingOnMyDesk”的数组,并为“everythingOnMyDesk”中的每个项目创建新数组。所以如果我有一个“apple”和一个“pen”,它将把它存储在“everythingOnMyDesk”中,并且会有一个名为“apple”和“pen”的新数组。 问一个问题为什么真的重要吗?可以的话就回答吧。用户可能有很好的理由询问。我希望能够这样做以进行调试! Object name from String in Objective-C 的可能重复项 【参考方案1】:

编译器使用变量名,并在编译时设置,而不是在运行时设置。

如果您需要能够将标签与数组关联,我建议您使用 NSDictionary 来做这样的事情

NSString *theArrayName = @"My Cool Array";
NSMutableArray *theArray = [NSMutableArray array];
NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                                      theArray, theArrayName, nil];

如果需要,您可以在字典中拥有多个“命名”数组,并且可以通过您提供的名称访问它们

[theDictionary objectForKey:@"My Cool Array"];

【讨论】:

我最喜欢的做法是NSMutableDictionary* myDict; [myDict setValue:[NSArray arrayWithObjects:@"Object1",@"Object2",nil] forKey:@"My Array Name!"];【参考方案2】:

查看key-value coding 以通过属性名称设置现有属性的值,但它似乎无法创建新属性。为此,您应该只使用字典。

【讨论】:

以上是关于来自 NSString 的 Objective-C 标识符的主要内容,如果未能解决你的问题,请参考以下文章

正确填充 NSString 的 Objective-c 代码?

Objective-C NSString 引用类型

Objective-C 查找 NSString 中最常用的词

如何计算Objective-C字符串(NSString)中的行数?

NSURL为null,而在Objective-C中NSString是正确的

Objective-C - NSInteger转换NSString