当我尝试使用重音符号获取远程JSON文件时,我遇到了麻烦。如果我取消JSON文件的重音,它可以很好地工作,但是如果我保留它们,我就会出错。由于您可以验证,我尝试使用“NSUTF8StringEncoding”,但是,它不能正常工作。有什么想法吗?
func getJSON(completionHandler: ((NSArray!, NSError!) -> Void)!) -> Void
{
var urlAux = "http://www.xxxx.com/downloads/example.json"
var urlAuxUTF8 = urlAux.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
let url: NSURL = NSURL(string: urlAuxUTF8!)
let ses = NSURLSession.sharedSession()
var enc:NSStringEncoding = NSUTF8StringEncoding
var error: NSError?
let content = NSString.stringWithContentsOfURL(url, usedEncoding:&enc, error:&error)
if (error != nil)
{
NSLog("error: %@", error!)
exit(-1)
}
else
{
let json = NSJSONSerialization.JSONObjectWithData(content.dataUsingEncoding(enc)!, options:nil, error: &error) as NSDictionary
if (error != nil) {
return completionHandler(nil, error)
} else {
return completionHandler(json["express"] as [NSDictionary], nil)
}
}
}
答案 0 :(得分:0)
你有完美的NSData,你将它转换为字符串并且必须猜测编码,然后再将它转换为NSData。使用直接获取NSData的函数,无需转换为字符串,并将其原样传递给NSJSONSerialization。