我想在ViewController中获取JavaScript返回值,
问题是,如果像String这样的数据很少,我就会得到它。
但是如果有像JSON对象那样的大数据,它显示为零。
当我在Safari> Develop> iOS模拟器中调用相同的JS函数时,它会在1-2秒后给出JSON对象。
这是我的代码:
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_small_string()")
println(value) //Printing value
但这打印为零,
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
println(value) //Printing nil
谁知道如何在iOS对象中获取大尺寸的JS返回值?
这解决了我的问题,
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
}
一旦你将返回一个对象它将无法工作,你可以尝试返回一个字符串版本的对象
JSON.stringify(yourObject);
并在本机端解析此字符串。
如果您的java脚本方法“get_JSON()”返回的数据超过10 MB,则stringByEvaluatingJavaScriptFromString方法不允许这样做。
或者如果处理输出需要10秒以上的时间,那么您将获得nil值作为输出。