Swift,从字符串中获取变量名

时间:2014-11-11 08:18:02

标签: ios iphone xcode pointers swift

我有一个问题。我知道这可以在Ruby中完成,不确定Swift,但从未做过类似的事情。 我正在研究的是一个与此类似的程序:如果用户在TextView“a + b”中写入,我的代码应该详细说明变量“a”和“b”之间的总和值。 我的意思是,如何从字符串中获取变量名?它有可能吗?

如果不是,我会使用开关(变量名称有限),但我需要将变量“连接”到用户编写的变量。在这个例子中,如果用户写“a + b”,我的sum函数就像“sum(par1,par2)”,那么,我怎样才能使变量“par1”指向“a”和“par2”指向“b”?我可以用指针做到这一点吗?还有其他办法吗?

我不确定我是否清楚,但很难解释

1 个答案:

答案 0 :(得分:1)

检查一下。您可以使用NSExpressionKVC

class myclass:NSObject {

    var a = 10;
    var b = 20;

    override init() {
        super.init();
    }


}

var obj = myclass();

// Expression from user
var expr:NSString = "a+b" ;

//Operators..
let opSet = NSMutableCharacterSet()
opSet.addCharactersInString("+-*/");


let components:NSArray = expr.componentsSeparatedByCharactersInSet(opSet)
let uniqueChars:NSSet = NSSet(array: components)

for variable in uniqueChars
{
    expr = expr.stringByReplacingOccurrencesOfString ( variable as String,
    withString  : NSString(format: "%d", obj.valueForKey(variable as String) as Int),
    options     : NSStringCompareOptions.LiteralSearch,
    range       : NSMakeRange(0,expr.length)         );

}


var result: AnyObject = NSExpression(format: expr).expressionValueWithObject(nil, context: nil)

print (result);