Подтвердить что ты не робот

Получение возвращаемого значения из JavaScript в UIWebView

Я хочу получить возвращаемое значение JavaScript в моем ViewController,

Проблема заключается в том, что если есть небольшое количество данных, таких как String, я получаю его.

Но если есть большие данные, такие как объект JSON, он показывает nil.

Когда я вызываю ту же функцию JS в Safari > Develop > iOS simulator, она дает объект JSON через 1-2 секунды.

Вот мой код:

var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_small_string()")
println(value)   //Printing value

но это печатает нуль,

var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
println(value)   //Printing nil

Кто-нибудь знает, как я могу получить возвращаемое значение JS большого размера в объекте iOS?

4b9b3361

Ответ 1

Это решит мою проблему,

var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")

var err:NSError?
var obj:AnyObject? = NSJSONSerialization.JSONObjectWithData(value!.dataUsingEncoding(NSUTF8StringEncoding)!, options:nil, error:&err)

if let items = obj as? NSDictionary {
var data1:String = items.objectForKey("data1") as? String
var data2:String = items.objectForKey("data2") as? String
var data3:String = items.objectForKey("data3") as? String
}

Ответ 2

Как только вы вернете объект, он не сработает, вместо этого вы можете попытаться вернуть стробированную версию вашего объекта

JSON.stringify(yourObject);

И проанализируйте эту строку с внутренней стороны.

Ответ 3

Если ваш метод java script "get_JSON()" возвращает более 10 МБ данных, тогда его не допускает метод stringByEvaluatingJavaScriptFromString.

Или, если для обработки вывода требуется более 10 секунд, в этом случае вы получите значение nil в качестве вывода.