我已经创建了一个预定义颜色库,可以在Swift和Objective-C中使用,我已经为Xcode重写了一个插件,它在编辑器中预览颜色,以便它可以与我的库一起工作(以及其他一些变化).
该插件目前有一个创建的颜色列表.我对这个解决方案并不感到兴奋,因为这意味着无论何时我改变颜色列表,我都必须在这里修改我的代码.另外,我不喜欢有一个数据结构,周围有大约1500种颜色和字符串.似乎没那么高效或优雅.
我想要做的不是将所有颜色存储在内存中,而是在代码中遇到函数名时调用NSColor的正确函数.我发现我可以检查NSColor是否使用函数respondsToSelector响应选择器:但调用performSelector:不符合我的需要,因为我需要调用的返回值.
那么还有一种方法可以解决这个问题.
let colourDict [ String : NSColor ] = [
"blackColor" : NSColor.blackColor(),
"whiteColor" : NSColor.whiteColor() ]
...
let foundColour = colourDict[ colourMethodName ]
Run Code Online (Sandbox Code Playgroud)
对于这样的事情.
if ( NColor.respondsToSelector ( Selector ( colourMethodName ) ) {
foundColour = NSColor.performSelector ( Selector ( colourMethodName ) )
}
Run Code Online (Sandbox Code Playgroud)
显然它不是performSelector:function本身,但我正在寻找那种类型的功能,除了它将返回NSColor对象.
谢谢.
swift ×1