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