在线阅读swift中的JSON文件

时间:2014-09-17 19:40:27

标签: json swift nsurlsession

我正在尝试使用找到的样本here来阅读在线JSON文件。除非我运行它,它似乎很直接。它一直在dataTaskWithURL调用失败,而error.localizedDescription是"操作无法完成。 (NSURLErrorDomain -1005。)"我查找了错误代码,它引用了NSURLErrorNetworkConnectionLost但我连接到了互联网,当我在浏览器中尝试相同的URL时,我收到了JSON结果。

func searchItunes() {
    let urlPath = "http://itunes.apple.com/search?term=JQ+Software&media=software"
    let url: NSURL = NSURL(string: urlPath)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url, completionHandler: {
        data, response, error  in
        if(error != nil) {
            println(error.localizedDescription)
        }
        else {
            var err: NSError?
            var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
            if(err != nil) {
                println("JSON Error \(err!.localizedDescription)")
            }
            else {
                // process data here.
            }
        }
    })
    task.resume()
}

3 个答案:

答案 0 :(得分:0)

这应该可行,但请注意,您在上面的粘贴在else块中有额外的})以及下面的附加}。有了这个,我得到了上述成功的工作。如果您的代码在您的代码中匹配,那么您的浏览器中可能会使用某种中间代理,但不会迅速,反之亦然,这会导致更改发生。

请注意,后台线程需要很短的时间才能解决,因此如果您的程序在后台完成下载之前终止,您将无法看到任何内容。

答案 1 :(得分:0)

我正在使用iOS模拟器,我意识到虽然我的笔记本电脑连接到互联网,但模拟器并不是因为系统偏好设置中的服务顺序\网络WiFi不在顶部。显然,模拟器不会试图找到第一个实际连接的设备!所以我重新订购了服务,现在代码工作正常。

答案 2 :(得分:-3)

//this is swift program 
struct Stack<Element>{
 var brackets = [Element]()
 mutating func push(bracket:Element){
   brackets.append(bracket)
}
mutating func pop() -> Element{
 return brackets.removeLast()
}
}


var stackOfCharacter = Stack<String>()
var arrayCharacter: [String] = ["[","(",")","]"]
for symbol  in arrayCharacter{
if symbol == "{" {
stackOfCharacter.push(bracket: symbol)

}
else if symbol == "[" {
    stackOfCharacter.push(bracket:symbol)
}
else if symbol == "(" {
    stackOfCharacter.push(bracket:symbol)
}

else if symbol == "}"{

 if    stackOfCharacter.brackets.count != 0 {
 var topItem = stackOfCharacter.brackets[stackOfCharacter.brackets.count - 1]

 if topItem == "{" {
    var element = stackOfCharacter.pop()  
}
}   
 }
 else if symbol == ")" {
 if    stackOfCharacter.brackets.count != 0 {
 var topItem = stackOfCharacter.brackets[stackOfCharacter.brackets.count - 1]

 if topItem == "(" {
    var element = stackOfCharacter.pop()  
}
}  
}

 else if symbol == "]" {
    if    stackOfCharacter.brackets.count != 0 {
 var topItem = stackOfCharacter.brackets[stackOfCharacter.brackets.count - 1]

 if topItem == "[" {
    var element = stackOfCharacter.pop()  
}
} 
 }
 else {
     stackOfCharacter.push(bracket:symbol)
 }
}
var count = stackOfCharacter.brackets.isEmpty
 if count  {
     print ("valid  ")
 }
 else {
     print ("Invalid")
 }