1
用字符串在Java中创建类实例并不困难,但我对swift很陌生,并且在该语言中做同样的事情对我来说非常困难。从Java到Swift的反思
动机:
我需要调用未知控制器和其知晓的方法(MVC)
的Java
String className = "MyClass";
String methodName = "MyMethod"; // with one argument like (String[] args) and return String
// in swift can be a Dictionary
String[] argument = new String[] {"A", "B"}
Class<?> clazz = Class.forName(className);
Object instance = clazz.newInstance();
Method method = clazz.getDeclaredMethod(methodName, Class<?>[]);
Object returnStringObject = method.invoke(instance, argument);
我在斯威夫特
let clazz: AnyClass? = NSClassFromString(className)
if clazz != nil {
// ERRORRRRRR (use of unresolved identifier NSSelectorFromString)
let selector: Selector = NSSelectorFromString(methodName)
// ERRORRRRRR (cannot invoke performeSelector with an argument list of type selector)
clazz?.performSelector(selector)
}
尝试
如何我可以做同样的事情从Java到迅速
选择器行实际上不应该导致错误。但第二个错误是合理的,因为你目前只持有类的引用,而不是一个实例。你现在缺少的是相当于'clazz.newInstance()'。 – luk2302
@ luk2302你能举一个例子吗?不幸的是,没有像我在java中发布的那样快速的例子。 – Mystic
都是可以在NSObject的子类中传递的类吗? – luk2302