Свифт:
tableView.setContentOffset(CGPointZero, animated: true)
Эта ссылка может быть полезной. Кажется, лучшее, что вы можете сделать, - это положиться на конкретный класс реализации.
За исключением, возможно, простых значений, я бы предпочел позволить механизму сценариев преобразовывать свои значения в типы Java.
public class ScriptDemo {
static class Result {
private String[] words;
public void setWords(String[] words) {
this.words = words;
}
}
static final String SCRIPT = "var foo = 'Hello World!';\n"
+ "result.setWords(foo.split(' '));";
public static void main(String[] args)
throws ScriptException {
Result result = new Result();
javax.script.ScriptEngineManager mgr = new ScriptEngineManager();
javax.script.ScriptEngine scripEngine = mgr
.getEngineByExtension("js");
scripEngine.getContext().setAttribute("result", result,
ScriptContext.ENGINE_SCOPE);
scripEngine.eval(SCRIPT);
System.out.println(Arrays.toString(result.words));
}
}
Даже если вы не можете редактировать сценарий, вы можете взять возвращаемое значение и пропустите его через свой собственный сгенерированный скрипт, чтобы выполнить принуждение. Предполагается, что вы что-то знаете о возвращаемом значении.
РЕДАКТИРОВАТЬ: поскольку ничего не известно о возвращаемом значении, я бы сначала протестировал его с помощью Java ( getClass () ), чтобы увидеть, было ли оно одним из типы java.lang. Если возвращаемый объект принадлежит некоторому API, частному для библиотеки, я бы проанализировал его, используя язык сценариев (в данном случае JavaScript), возможно, принуждение его к типу Java или вставляя его свойства в некоторую структуру данных Java во время процесса.
Мой JavaScript заржавел, но учебник Джона Лича выглядит неплохо: