将jsonobject从swift4传递到wkwebview JavaScript函数
我在swift中有一个函数,它将文件内容作为字符串读取,并使用jsonserialization将其转换为json对象。我想将json对象作为对象传递给wkwebview JavaScript函数。这样我就可以从JavaScript访问数据了将jsonobject从swift4传递到wkwebview JavaScript函数,javascript,swift3,swift4,Javascript,Swift3,Swift4,我在swift中有一个函数,它将文件内容作为字符串读取,并使用jsonserialization将其转换为json对象。我想将json对象作为对象传递给wkwebview JavaScript函数。这样我就可以从JavaScript访问数据了 我使用swift的evaluatescript方法解决了这个问题 Swift代码 func readFromFile(_ fileurl: String) { var myData:String = ""; do { let
我使用swift的evaluatescript方法解决了这个问题 Swift代码
func readFromFile(_ fileurl: String) {
var myData:String = "";
do {
let url = NSURL(string: fileurl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)
myData = try String(contentsOf: url! as URL)
let data = myData.data(using: String.Encoding.utf8, allowLossyConversion: false)!
do {
let json = try JSONSerialization.jsonObject(with: data, options: []) as! [String: AnyObject]
let serializedData = try! JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
let encodedData = serializedData.base64EncodedString(options:.endLineWithLineFeed)
let js2:String = "LoadJson('\(encodedData)')"
self.wkWebView?.evaluateJavaScript(js2, completionHandler: { (AnyObject, NSError) -> Void in
NSLog("%s", #function)
self.showMessage("Loaded")
})
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
} catch{
showMessage("Loading error.");
}
}
function LoadJson (encodedData) {
try {
var decodedData = window.atob(encodedData);
jsonObj = JSON.parse(decodedData);
}
catch (err) {
}
}
Javascript代码
func readFromFile(_ fileurl: String) {
var myData:String = "";
do {
let url = NSURL(string: fileurl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)
myData = try String(contentsOf: url! as URL)
let data = myData.data(using: String.Encoding.utf8, allowLossyConversion: false)!
do {
let json = try JSONSerialization.jsonObject(with: data, options: []) as! [String: AnyObject]
let serializedData = try! JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
let encodedData = serializedData.base64EncodedString(options:.endLineWithLineFeed)
let js2:String = "LoadJson('\(encodedData)')"
self.wkWebView?.evaluateJavaScript(js2, completionHandler: { (AnyObject, NSError) -> Void in
NSLog("%s", #function)
self.showMessage("Loaded")
})
} catch let error as NSError {
print("Failed to load: \(error.localizedDescription)")
}
} catch{
showMessage("Loading error.");
}
}
function LoadJson (encodedData) {
try {
var decodedData = window.atob(encodedData);
jsonObj = JSON.parse(decodedData);
}
catch (err) {
}
}