是否将AnyObject/NSDictionary(JSON)转换为字符串



我正在为朋友列表调用Facebook图,我想将其作为参数发送到我的UIWebView中的javascript函数。

我的问题是我无法将响应(AnyObject/NSDictionary)转换为普通的简单String

在本例中,我希望将完整的响应作为字符串发送到JavaScript方法,我将在内部使用该字符串。

(目前我得到了一个空的String,到目前为止我的每一次尝试都失败了)

let graphFriendsRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/friends", parameters: nil)
graphFriendsRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
println("Error: (error)")
}
else
{
println("fetched friends: (result)")
let data:NSDictionary=result as! NSDictionary

var jsmethod = NSString(format:"setusers('%@')",data) as String
self.webView.stringByEvaluatingJavaScriptFromString(jsmethod)

}
})

根据您在评论中所说的,我认为您应该生成JSON,而不是操纵字符串本身。

您在Swift应用程序中收到JSON,并且您希望在JavaScript中使用JSON:无需使用"已清理"的字符串。

// Bogus data for example: an array with a dictionary
let exampleString = "[{"fields": {"key1": 42}}]" // it would be `jsmethod` for you
let exampleStringData = exampleString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
// Cocoa object from data
var arrayFromData = NSJSONSerialization.JSONObjectWithData(exampleStringData!, options: nil, error: nil) as! NSArray
// JSON from the object
var toJS = NSJSONSerialization.dataWithJSONObject(arrayFromData, options: NSJSONWritingOptions.PrettyPrinted, error: nil)

然后将这个真正的JSON发送到您的JavaScript。

编辑:

你说的是像用URL和空格一样清除字符串吗?如果是,你可以这样做(很多选项):

let sanitized = jsmethod.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

最新更新