NSString 到类实例变量
我正在寻找一种从 NSString 转换为类实例变量的方法。对于下面的示例代码,假设过滤器是“colorFilter”。我希望将这里的filternameclassinstancegohere 替换为colorFilter。
- (void)filterSelected:(NSString *)filter
{
self.filternameclassinstancegohere = ….;
}
I am looking for a way to convert from NSString to a class instance variable. For sample code below, say filter is "colorFilter". I want filternameclassinstancegohere to be replaced with colorFilter.
- (void)filterSelected:(NSString *)filter
{
self.filternameclassinstancegohere = ….;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
虽然针对这个问题给出了很好的建议解决方案,但我发现我需要的是 NSClassFromString 方法。这是最终的实现:
While there were good suggested solutions given for this question, I discovered what I needed is the NSClassFromString method. Here is a final implementation:
考虑使用一个带有字符串键的 NSMutableDictionary 实例变量,而不是 40 个实例变量。
Consider using one NSMutableDictionary instance variable with string keys rather than 40 instance variables.
您可以使用 NSSelectorFromString() 创建任意选择器:
这将调用上面示例中的方法 colorFilter 。
在调用之前也最好检查一下
respondsToSelector
。You can create an arbitrary selector using
NSSelectorFromString()
:This will call a method
colorFilter
in your example above.Would be wise to check with
respondsToSelector
before calling, too.如果过滤器值只能是少量、恒定数量的事物,则只需使用枚举和 switch 语句:
如果过滤器值集很大并且可能经常更改,那么您也可以使用 键值编码。它更复杂但更灵活。
If the filter value can only be a small, constant number of things, just use an enumeration and a switch statement:
If the set of filter values is large and could change frequently, then you could also use Key-Value Coding. It's more complicated but more flexible.